Sisukord:

132 pikslikell: 5 sammu (piltidega)
132 pikslikell: 5 sammu (piltidega)

Video: 132 pikslikell: 5 sammu (piltidega)

Video: 132 pikslikell: 5 sammu (piltidega)
Video: Вентиляция в хрущевке. Как сделать? Переделка хрущевки от А до Я. #31 2024, November
Anonim
Image
Image
132 piksliline kell
132 piksliline kell

Olen LED -idest ja ajast kinnisideeks saanud nii kaua kui mäletan. Selles projektis olen loonud suure seinakella, mis kuvab praeguse aja, kasutades 132 neopixel -LED -i, mis on paigaldatud ja kumavad läbi kuuseplaadi. See on hübriidanaloog -digitaalne, millel on individuaalne piksel iga tunni, minuti ja sekundi kohta.

See oli seni suurim projekt, mille olen ette võtnud, hakkasin sellele 6 kuud tagasi mõtlema ja idee tuli tasapisi kokku. Olen tulemusega väga rahul ja ootan huviga seda teiega jagamas.

Samm: tarvikute ja tööriistade kogumine

Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine
Tarvikute ja tööriistade kogumine

Komponendid

See projekt on üles ehitatud minu kohaliku isetegevuskaupluse poe harrastustahvlile. Plaadi laius on 850 mm, kõrgus 500 mm ja sügavus 18 mm.

Selles projektis kasutatavad valgusdioodid on 5050 WS2812b, mis on paigaldatud ümmargustele PCB -dele, mille läbimõõt on umbes 9 mm ja tagaküljel on jootmispadjad.

Ma kasutan Arduino Pro Mini ühilduvat mikrokontrollerit. See on 5V 16 MHZ versioon. Valisin selle, kuna sellel on üliõhuke disain, väike jalajälg ja kõik vajalikud pordid ning mõned varud tulevasteks uuendusteks. Samuti on see 5 volti, nii et saan LED -ide, mikrokontrolleri ja RTC jaoks kasutada ühte toiteallikat

Aja arvestamise eest hoolitseb RTC (Real Time Clock) moodul, millel on DS3231 kiip. See kiip on väga täpne, nii et aeg ei tohiks liiga palju triivida.

Kasutatakse ka:

Traat. Jootmine ja kuum liim.

Tööriistad:

Puurpuurid ja puuritrid (10 mm ja 5 mm)

Jootekolb

Kuum liimipüstol

traadi jupid

Dremeli ja sukeldumisruuteri tarvikud

2. samm: märgistamine, puurimine ja marsruutimine

Märgistamine, puurimine ja marsruutimine
Märgistamine, puurimine ja marsruutimine
Märgistamine, puurimine ja marsruutimine
Märgistamine, puurimine ja marsruutimine
Märgistamine, puurimine ja marsruutimine
Märgistamine, puurimine ja marsruutimine

Puurimine

  • Väina serva abil leidke tahvli keskpunkt, tõmmates vastassuunalistest nurkadest joone.
  • Märkige nööri ja pliiatsi abil 3 ringi. Kõige välimine ring peaks asuma laua servast umbes 20 mm kaugusel, ülejäänud 2 joont liiguvad 15 mm kaugusel viimasest joonest.
  • Kasutasin trükitud kella, mis aitas mul märkida iga minuti ja sekundi positsioonid kahel välimisel real ja tundidel sisereal.
  • Puurige umbes 5 mm sügavused 10 mm augud iga tunni, minuti ja sekundi jooksul.
  • Kasutage 5 mm puurit, et teha auke laual tund, minut ja sekund.

Marsruutimine

Kuigi see samm pole vajalik, võimaldab see kella seinale kinnitada.

  • Ruuteri ja ringijuhiku kasutamine marsruudi traatkanalid laual
  • Märkige välja ja suunake süvend RTC ja mikrokontrolleri elamiseks.
  • Suunake kanal välisliinidest juhtmete süvendisse

3. samm: nii palju sõdurit, lõikamist ja eemaldamist

Nii palju sõdurit, lõikamist ja eemaldamist
Nii palju sõdurit, lõikamist ja eemaldamist
Nii palju sõdurit, lõikamist ja eemaldamist
Nii palju sõdurit, lõikamist ja eemaldamist
Nii palju sõdurit, lõikamist ja eemaldamist
Nii palju sõdurit, lõikamist ja eemaldamist

See järgmine osa on palju lihtsam öelda kui teha. Minu nõuanne oleks märkus kiirustada. proovige leida süsteem ja siseneda rütmi.

Iga LED vajab 5 volti sisse, 5 volti välja, andmed sisse, andmed välja, maandus sisse ja maandus välja. sealhulgas toide mikrokontrollerile ja RTC -le üle 400 juhtme, kõik mõlemast otsast eemaldatud ja joodetud.

Kleepuv sinine aine on selle sammu jaoks väga kasulik.

  • Alustasin sellest, et asetasin 2 LED -i oma aukudesse kõrvuti, et välja selgitada teineteisega ühendamiseks vajaliku juhtme pikkus.
  • Kasutades juhendina esimest traaditükki, lõikasin seejärel 60 värvilist traati.
  • Eemaldage iga traadi otstest 2 mm varrukad ja tinage need joodisega.
  • Jootke igale LED -padjale väike jootetükk.
  • Jootke juhtmed valgusdioodide külge, et moodustada kaks 60 -minutilist ahelat minutite ja sekundite jaoks ning üks 12 -lüliline kett tundide jaoks. Ma kasutasin punast traati 5 V jaoks, kollast andmete jaoks ja sinist maandamiseks.
  • Hoolitsege iga andmeväljundi (DOUT) ühendamise eest järgmise LED -i andmete sisendiga (DIN)
  • Iga aheldoosi viimane LED ei vaja andmesidekaablit.

Kui kõik ahelad on lõpule jõudnud, on hea mõte neid enne paigaldamist testida. Kasutasin oma Arduino UNO -d ja Adafruit NeoPixel Strand Testit, et kinnitada, et iga LED töötab.

Jootke pikemad juhtmed igale ahelale 5 V, maanduse ja andmete sisendi jaoks.

Sel hetkel peaks olema viis 5 -voldist juhet, kolm Arduino Pro Mini -ga ühendatud andmesidejuhet ja 5 maandusjuhet.

Eemaldage 5 mm juhtmete otstest 5 mm ja jootke need kõik kokku ning korrake maandusjuhtmete puhul.

Pärast kolme ahela lõpetamist jootke 5 V juhe Arduino Pro Mini RAW -tihvti külge ja RTC jaoks ka VCC -tihvti külge. Arduino Pro Mini ja RTC maandusjuhe GND -le ja seejärel veel 2 juhet:

SCL alates ProC -st RTC -st kuni A5 -ni

SDA RT Mini -st kuni A4 -ni

Valgusdioodide andmeliinid peaksid ühenduma:

  • Sekundid - digitaalne tihvt 3.
  • Protokoll - DigitalPin 4
  • Tundi - DigitalPin 5

4. samm: installimine

Paigaldamine
Paigaldamine
Paigaldamine
Paigaldamine
Paigaldamine
Paigaldamine

Pärast jootmist peaks LED -id nende aukudesse paigaldama otse edasi. Valgusdioodid tuleb paigaldada nii, et andmed jooksevad tagantpoolt vaadates vastupäeva, kuna kood on ettepoole suunatud.

Kasutasin nende hoidmiseks väikest kogust kuuma liimi, kuna soovin, et saaksin asendada ühe LED -i, kui see tulevikus ebaõnnestub.

Kasutasin ka kuuma liimi, et hoida kõik juhtmed puhtana ja korras ning kinnitada tünni pistik plaadi külge.

Saadaval on mitmeid arduino pro mini programmeerimisjuhendeid. Selle koodi Arduinole laadimiseks kasutan välist USB -seeriamuunduri meetodit:

See kood määrab RTC -le ka selle koostamise aja. seega on oluline lihtsalt üleslaadimisnupp varjata, et see järgiks ja laadiks üles nii kiiresti kui võimalik.

Suure osa sellest koodist laenas Ando Doro NeoPixel Ring Clockilt. Mõned Adafruit NeoPixel Strand Testist ja mõned panin kokku.

Peate installima mõned raamatukogud. Need on saadaval raamatukogude haldajalt Arduino tarkvaras.

Adafruit NeoPixel LED -ide ws2812b jaoks

Juhe RTC -ga rääkimiseks I2C kaudu (see on standardvarustuses)

ja RTClib, sest nad teadsid, mida RTC -lt küsida

/************************************************ ***************************NeoPixel Ring Clock, autor Andy Doro ([email protected]) https://andydoro.com/ringclock/ ************************************************* **************************

Revision ajalugu

Kuupäev Mille järgi

20140320 AFD Esimene mustand 20160105 AFD Tuhmunud kaared 20160916 AFD nipsasjaga ühilduv 20170727 AFD lisas STARTPIXELi 3D -korpusele, muutuva lähtepunkti, lisas automaatse DST -toe 20180424 AFD, kasutades DST -teeki https://github.com/andydoro/DST_RTC *

/ lisage raamatukogu kood:

#kaasama #kaasama

#kaasake

// määrake tihvtid

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

#define BRIGHTNESS 20 // määrake maksimaalne heledus

#määratle r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Kellaobjekti loomine

Adafruit_NeoPixel ribaS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // riba objekt

Adafruit_NeoPixel ribaM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // riba objekt Adafruit_NeoPixel ribaH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // riba objekti bait pixelColorRed, pixelColorGreen, pixelColorBlue; // omab värviväärtusi

tühine seadistus () {

Wire.begin (); // Alusta I2C rtc.begin (); // alusta kella

Seriaalne algus (9600);

// määrake pinmodes pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, VÄLJUND);

if (rtc.lostPower ()) {

Serial.println ("RTC kaotas voolu, määrab aja!"); // järgmine rida määrab RTC -le selle visandi koostamise kuupäeva ja kellaaja rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // See rida määrab RTC -le selgesõnalise kuupäeva ja kellaaja, näiteks määrata // 21. jaanuar 2014 kell 3:00 helistate: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

ribaM.begin (); ribaH.algus (); //strip.show (); // Initsialiseeri kõik pikslid olekusse „väljas”

// käivitusjärjestus

viivitus (500);

colorWipeS (riba S. Värv (0, g, 0), 5); // Sinine värvWipeM (ribaM. Värv (r, 0, 0), 5); // Sinine värvWipeH (ribaH. Värv (0, 0, b), 50); // Sinine

viivitus (1000);

DateTime theTime = rtc.now (); // võtab arvesse DST baiti secondval = theTime.second (); // saada sekundit baiti minuteval = theTime.minute (); // saada minutit int hourval = theTime.hour (); hourval = tunniaeg % 12; // See kell on 12 tundi, kui 13-23, muuda 0-11`-ks

jaoks (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); viivitus (5); }

jaoks (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); viivitus (5); }

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

}

void loop () {

// saada aega

DateTime theTime = rtc.now (); // võtab arvesse DST

bait secondval = theTime.second (); // saada sekundeid

bait minutivalik = theTime.minute (); // saada minutit int hourval = theTime.hour (); // saada tunnid hourval = hourval % 12; // See kell on 12 tundi, kui 13-23, muuda 0-11`-ks

stripS.setPixelColor (secondval, 0, 0, 20); stripS.show (); viivitus (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); viivitus (16);}}

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

stripM.show (); viivitus (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); viivitus (16);}}

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

stripH.show (); viivitus (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);}} // jadamisi silumiseks Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Täida punktid üksteise järel värviga

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

void colorWipeM (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); viivitus (oota); }}

void colorWipeH (uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); viivitus (oota); }}

5. samm: viimased puudutused

Image
Image
Viimased puudutused
Viimased puudutused

Nüüd jääb üle vaid RTC ja mikrokontroller süvendisse kinnitada.

Olen paigaldanud RTC aku poole ülespoole, et saaksin vajadusel akut hõlpsalt vahetada.

Ühendage 5v juhtmed pistiku + küljega ja maandus - küljega

Lülitage see sisse!

Minu oma on ühendatud USB -akupangaga, kuid USB -telefoni laadija töötaks sama hästi.

Märge:

Valgusdioodide heledus määratakse koodis. See on seatud madalaks, et hoida voolu madalal. Täieliku heleduse korral, kui kõik LED -id põlevad, võib see võtta ligi 8 amprit. Praeguse seadistuse korral on see väiksem kui 1.

Kellade võistlus
Kellade võistlus
Kellade võistlus
Kellade võistlus

Kellade võistluse teine koht

Soovitan: