Turinys:

132 pikselių laikrodis: 5 žingsniai (su nuotraukomis)
132 pikselių laikrodis: 5 žingsniai (su nuotraukomis)

Video: 132 pikselių laikrodis: 5 žingsniai (su nuotraukomis)

Video: 132 pikselių laikrodis: 5 žingsniai (su nuotraukomis)
Video: PARSONVER LA24 Smartwatch Review: A Stylish and Affordable Option for Women 2024, Lapkritis
Anonim
Image
Image
132 pikselių laikrodis
132 pikselių laikrodis

Kiek prisimenu, buvau apsėstas šviesos diodų ir laiko. Šiame projekte sukūriau didelį sieninį laikrodį, rodantį dabartinį laiką, naudojant 132 neopikselinius šviesos diodus, sumontuotus ir šviečiančius per eglės lentą. Tai hibridinis analoginis skaitmeninis su individualiu pikseliu kiekvienai valandai, minutei ir sekundei.

Tai buvo didžiausias projektas, kurio ėmiausi iki šiol, pradėjau apie tai galvoti prieš 6 mėnesius ir lėtai kilo idėja. Esu labai patenkinta rezultatu ir nekantrauju pasidalinti ja su jumis.

1 žingsnis: Surinkite reikmenis ir įrankius

Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius
Rinkti reikmenis ir įrankius

Komponentai

Šis projektas yra sukurtas ant „cheep“pomėgių lentos iš mano vietinės „pasidaryk pats“parduotuvės. Plokštės plotis 850 mm, aukštis 500 mm, gylis 18 mm.

Šiame projekte naudojami šviesos diodai yra 5050 WS2812b, sumontuoti ant apskritų maždaug 9 mm skersmens PCB su litavimo pagalvėlėmis gale.

Aš naudoju „Arduino Pro Mini“suderinamą mikrovaldiklį. Tai 5V 16 MHZ versija. Aš pasirinkau šį, nes jis turi labai ploną dizainą, mažą pėdsaką ir visus būtinus prievadus bei šiek tiek atsargų būsimiems atnaujinimams. Jis taip pat yra 5 voltų, todėl galiu naudoti vieną maitinimo šaltinį šviesos diodams, mikrovaldikliui ir RTC

Laiko laikymu rūpinasi RTC (Real Time Clock) modulis, turintis DS3231 lustą. Šis lustas yra labai tikslus, todėl laikas neturėtų per daug važiuoti.

Taip pat naudojamas:

Viela. Lituoklis ir karšti klijai.

Įrankiai:

Elektrinis gręžtuvas ir medžio grąžtai (10 mm ir 5 mm)

Lituoklis

Karštas klijų pistoletas

vielos atraižos

„Dremel“ir „Plunge“maršrutizatoriaus priedai

2 žingsnis: žymėjimas, gręžimas ir maršruto parinkimas

Žymėjimas, gręžimas ir maršruto parinkimas
Žymėjimas, gręžimas ir maršruto parinkimas
Žymėjimas, gręžimas ir maršruto parinkimas
Žymėjimas, gręžimas ir maršruto parinkimas
Žymėjimas, gręžimas ir maršruto parinkimas
Žymėjimas, gręžimas ir maršruto parinkimas

Gręžimas

  • Naudodami siaurą kraštą, suraskite lentos centrą, nubrėžę liniją iš priešingų kampų.
  • Naudodami virvelę ir rašiklį pažymėkite 3 apskritimus. Išorinis apskritimas turėtų būti maždaug 20 mm atstumu nuo lentos krašto, o kitos 2 linijos 15 mm atstumu nuo paskutinės linijos.
  • Aš naudoju atspausdintą laikrodžio rodyklę, kad padėčiau pažymėti kiekvienos minutės ir sekundės pozicijas išorinėse 2 eilutėse ir valandas vidinėje eilutėje.
  • Kiekvieną valandą, minutę ir sekundę gręžkite maždaug 5 mm gylio 10 mm skyles.
  • Naudokite 5 mm gręžtuvą, kad padarytumėte skyles per lentą valandą, minutę ir sekundę.

Maršrutizavimas

Nors šis žingsnis nėra būtinas, tai leis laikrodį pritvirtinti prie sienos.

  • Maršrutizatoriaus ir apskritimo kreiptuvo naudojimas nukreipia laidų kanalus lentoje
  • Pažymėkite ir nukreipkite įdubą, kad RTC ir mikrovaldiklis galėtų gyventi.
  • Nukreipkite kanalą nuo išorinių linijų iki laidų įdubos

3 žingsnis: tiek daug kareivių, pjaustymas ir pašalinimas

Tiek daug kareivių, pjovimo ir išardymo
Tiek daug kareivių, pjovimo ir išardymo
Tiek daug kareivių, pjovimo ir išardymo
Tiek daug kareivių, pjovimo ir išardymo
Tiek daug kareivių, pjovimo ir išardymo
Tiek daug kareivių, pjovimo ir išardymo

Šią dalį daug lengviau pasakyti nei padaryti. Mano patarimas būtų įsidėmėti. pabandykite surasti sistemą ir įsitraukti į ritmą.

Kiekvienam šviesos diodui reikia 5 voltų įėjimo, 5 voltų išvesties, duomenų įvesties, duomenų išvesties, įžeminimo ir įžeminimo. įskaitant maitinimą mikrovaldikliui ir RTC - daugiau nei 400 laidų, visi nuimti ir lituoti iš abiejų galų.

Šiam žingsniui labai naudinga lipni mėlyna medžiaga.

  • Pradėjau įdėdamas 2 šviesos diodus į skyles šalia vienas kito, kad išsiaiškintumėte laido ilgį, reikalingą prisijungti vienas prie kito.
  • Naudodamas 1 -ąjį vielos gabalą kaip vadovą, tada nukirpau 60 kiekvienos spalvos vielos.
  • Nuo kiekvienos vielos galų nuimkite 2 mm apvalkalą ir padėkite juos lydmetaliu.
  • Lituokite nedidelį lituoklio gabalėlį ant kiekvienos LED pagalvėlės.
  • Lituokite laidus prie šviesos diodų, kad susidarytumėte dvi grandines po 60 minučių ir sekundžių, o vieną - po 12 grandinių valandoms. Aš naudoju raudoną laidą 5 V, geltoną - duomenims ir mėlyną - žemei.
  • Stenkitės kiekvieną duomenų išvestį (DOUT) prijungti prie kito šviesos diodo duomenų įvesties (DIN)
  • Paskutiniam kiekvienos grandinės dozės šviesos diodui nereikia duomenų perdavimo laido.

Kai visos grandinės bus baigtos, prieš diegiant jas verta išbandyti. Aš naudoju savo „Arduino UNO“ir „Adafruit NeoPixel Strand Test“, kad patvirtinčiau, jog kiekvienas šviesos diodas veikia.

Lituokite ilgesnius laidus ant kiekvienos grandinės 5 V, įžeminimo ir duomenų įvesties.

Šiuo metu turėtų būti penki 5 V laidai, trys duomenų laidai, prijungti prie „Arduino Pro Mini“ir 5 įžeminimo laidai.

Atsukite 5 mm nuo 5 V laidų galų ir lituokite juos visus kartu ir pakartokite įžeminimo laidus.

Užbaigus tris grandines, lituokite 5 V laidą prie „Arduino Pro Mini“RAW kaiščio ir RTC VCC kaiščio. Įžeminimo laidas prie GND „Arduino Pro Mini“ir RTC ir dar 2 laidai:

SCL nuo RTC iki A5 „Pro Mini“

SDA nuo RTC iki A4 „Pro Mini“

Šviesos diodų duomenų linijos turėtų būti prijungtos prie:

  • Sekundės - skaitmeninis kaištis 3.
  • Minutės - „DigitalPin 4“
  • Valandos - „DigitalPin 5“

4 žingsnis: diegimas

Diegimas
Diegimas
Diegimas
Diegimas
Diegimas
Diegimas

Lituoti šviesos diodus į skylutes reikia montuoti tiesiai į priekį. Šviesos diodai turi būti sumontuoti, kad duomenys būtų rodomi prieš laikrodžio rodyklę, žiūrint į juos iš galo, kai kodas yra nukreiptas į priekį.

Aš naudoju nedidelį kiekį karštų klijų, kad juos laikyčiau, nes noriu, kad ateityje galėčiau pakeisti vieną šviesos diodą.

Aš taip pat naudojau karštus klijus, kad visi laidai būtų tvarkingi ir tvarkingi, o statinės jungtis pritvirtinta prie plokštės.

Yra daugybė arduino pro mini programavimo vadovų. Aš naudoju išorinį USB į nuoseklųjį keitiklį, norėdamas įkelti šį kodą į „Arduino“:

Šis kodas taip pat nustatys RTC laiką iki to laiko, kai jis buvo sudarytas. todėl svarbu tiesiog paslėpti įkėlimo mygtuką, kad jis atitiktų ir įkeltų kuo greičiau.

Didžiąją šio kodo dalį pasiskolino Andy Doro iš „NeoPixel Ring Clock“. Kai kuriuos iš „Adafruit NeoPixel Strand Test“, o kai kuriuos sudėjau.

Turėsite įdiegti keletą bibliotekų. Juos galite rasti „Arduino“programinės įrangos bibliotekų tvarkytuvėje.

„Adafruit NeoPixel“skirtas „ws2812b“šviesos diodams

Laidas pokalbiui su RTC per I2C (jis įmontuotas standartiškai)

ir „RTClib“, kad žinotumėte, ko paklausti RTC

/************************************************ ***************************„NeoPixel Ring Clock“autorius Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* **************************

Revizijos istorija

Data pagal ką

20140320 AFD Pirmasis juodraštis 20160105 AFD Išblukę lankai 20160916 Suderinamas su „AFD Trinket“20170727 AFD pridėjo STARTPIXEL 3D korpusui, kintamas pradžios taškas, pridėtas automatinis DST palaikymas 20180424 AFD naudojant DST biblioteką https://github.com/andydoro/DST_RTC *

/ įtraukite bibliotekos kodą:

#įtraukti #įtraukti

#įtraukti

// apibrėžti smeigtukus

#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5

#define BRIGHTNESS 20 // nustatyti maksimalų ryškumą

#apibrėžti r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Nustatykite laikrodžio objektą

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // juostelės objektas

Adafruit_NeoPixel strip M = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // juostelės objektas Adafruit_NeoPixel strip H = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // juostos objekto baitas pixelColorRed, pixelColorGreen, pixelColorBlue; // turi spalvų reikšmes

void setup () {

Wire.begin (); // Pradėti I2C rtc.begin (); // pradėti laikrodį

Serial.begin (9600);

// nustatyti pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

if (rtc.lostPower ()) {

Serial.println ("RTC dingo energija, leidžia nustatyti laiką!"); // kita eilutė nustato RTC datą ir laiką, kai šis eskizas buvo sudarytas rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Ši eilutė nustato RTC su konkrečia data ir laiku, pavyzdžiui, nustatyti // 2014 m. Sausio 21 d., 3 val., Kurį galėtumėte skambinti: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Inicijuokite visus taškus į „išjungtą“

// paleidimo seka

vėlavimas (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Mėlyna spalvaWipeM (stripM. Color (r, 0, 0), 5); // Mėlyna spalvaWipeH (juostelėH. Spalva (0, 0, b), 50); // Mėlyna

vėlavimas (1000);

DateTime theTime = rtc.now (); // atsižvelgia į DST baitą secondval = theTime.second (); // gauti sekundes baitų minuteval = theTime.minute (); // gauti minutes int hourval = theTime.hour (); hourval = valanda % 12; // Šis laikrodis yra 12 valandų, jei 13-23, konvertuokite į 0-11`

for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); vėlavimas (5); }

for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); vėlavimas (5); }

for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); vėlavimas (5); }

}

void loop () {

// gauk laiko

DateTime theTime = rtc.now (); // atsižvelgia į DST

baitas secondval = theTime.second (); // gauti sekundes

baitas minuteval = theTime.minute (); // gauti minutes int hourval = theTime.hour (); // gauti valandas hourval = hourval % 12; // Šis laikrodis yra 12 valandų, jei 13-23, konvertuokite į 0-11`

stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); vėlavimas (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); uždelsimas (16);}}

stripM.setPixelColor (minuteval, 0, g, 0);

stripM.show (); vėlavimas (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); uždelsimas (16);}}

stripH.setPixelColor (valandinis, r, 0, 0);

stripH.show (); vėlavimas (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); delay (83);}} // serijiniam derinimui Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (antrasis, DEC); }

// Taškus vieną po kito užpildykite spalva

void colorWipeS (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); atidėti (laukti); }}

void colorWipeM (uint32_t c, uint8_t palaukti) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); atidėti (laukti); }}

void colorWipeH (uint32_t c, uint8_t palaukti) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); atidėti (laukti); }}

5 žingsnis: paskutiniai prisilietimai

Image
Image
Paskutiniai prisilietimai
Paskutiniai prisilietimai

Dabar belieka tik pritvirtinti RTC ir mikrovaldiklį įduboje.

Aš sumontavau RTC bateriją į viršų, kad prireikus galėčiau lengvai pakeisti bateriją.

Prijunkite 5 V laidus prie jungties + pusės, o įžeminimą - į šoną

Įjunkite!

Aš turiu prijungtą prie USB akumuliatoriaus banko, tačiau USB telefono įkroviklis veiktų taip pat gerai.

Pastaba:

Šviesos diodų ryškumas nustatomas kode. Jis buvo nustatytas žemai, kad srovė būtų maža. Esant visam ryškumui, kai visi šviesos diodai šviečia, jis gali pritraukti beveik 8 amperus. Esant dabartinei sąrankai, jis yra mažesnis nei 1.

Laikrodžių konkursas
Laikrodžių konkursas
Laikrodžių konkursas
Laikrodžių konkursas

Antroji vieta laikrodžių konkurse

Rekomenduojamas: