Kazalo:

Ura 132 slikovnih pik: 5 korakov (s slikami)
Ura 132 slikovnih pik: 5 korakov (s slikami)

Video: Ura 132 slikovnih pik: 5 korakov (s slikami)

Video: Ura 132 slikovnih pik: 5 korakov (s slikami)
Video: Сняла Киркорова что пьёт за кулисами на концерте!!!#концерт#киркоров#напитки 2024, November
Anonim
Image
Image
Ura 132 slikovnih pik
Ura 132 slikovnih pik

Odkar pomnim, sem obseden z LED diodami in časom. V tem projektu sem ustvaril veliko stensko uro, ki prikazuje trenutni čas z uporabo 132 neopiksnih LED diod, ki svetijo skozi smrekovo ploščo. To je hibridni analogni digitalni signal s posamezno slikovno piko za vsako uro, minuto in sekundo.

To je bil največji projekt, ki sem ga doslej sprejel, o tem sem začel razmišljati pred šestimi meseci in ideja se je počasi rodila. Zelo sem zadovoljen z rezultatom in se veselim, da ga delim z vami.

1. korak: Zberite potrebščine in orodja

Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij
Zbiranje potrebščin in orodij

Sestavni deli

Ta projekt temelji na nizki hobi plošči iz moje lokalne trgovine DIY. Širina plošče je 850 mm, višina 500 mm in globina 18 mm.

LED diode, uporabljene v tem projektu, so 5050 WS2812b, nameščene na okrogle tiskane plošče s premerom približno 9 mm s spajkalnimi blazinicami na zadnji strani.

Uporabljam mikro krmilnik, združljiv z Arduino Pro Mini. To je različica 5V 16 MHZ. Za to sem se odločil, saj ima super tanek dizajn, majhen odtis in vsa potrebna vrata ter nekaj rezervnih za prihodnje nadgradnje. Ima tudi 5 voltov, tako da lahko uporabim en sam napajalnik za LED, mikro krmilnik in RTC

Za merjenje časa skrbi modul RTC (ura realnega časa), ki vsebuje čip DS3231. Ta čip je zelo natančen, zato se čas ne sme preveč premikati.

Uporablja se tudi:

Žica. Spajkanje in vroče lepilo.

Orodja:

Vrtalnik in svedri za les (10 mm in 5 mm)

Spajkalnik

Pištola za vroče lepilo

žice

Dremel in dodatki za usmerjevalnik

2. korak: Označevanje, vrtanje in usmerjanje

Označevanje, vrtanje in usmerjanje
Označevanje, vrtanje in usmerjanje
Označevanje, vrtanje in usmerjanje
Označevanje, vrtanje in usmerjanje
Označevanje, vrtanje in usmerjanje
Označevanje, vrtanje in usmerjanje

Vrtanje

  • Z ožjim robom poiščite sredino deske tako, da potegnete črto iz nasprotnih vogalov.
  • Z vrvico in peresom označite 3 kroge. Največji zunanji krog mora biti približno 20 mm od roba plošče, drugi dve vrstici pa se premakneta 15 mm od zadnje vrstice.
  • Uporabil sem natisnjeno številčnico ure, ki mi je pomagala označiti položaje vsake minute in sekunde na zunanjih 2 vrsticah in urah na notranji vrstici.
  • Vsako uro, minuto in sekundo izvrtajte 10 mm luknje s približno 5 mm globine.
  • S 5 -milimetrskim svedrom naredite luknje na deski eno uro, minuto in sekundo.

Usmerjanje

Čeprav ta korak ni potreben, bo omogočil, da se ura poravna v steno.

  • Z uporabo usmerjevalnika in krožnih vodnikov položite žične kanale na ploščo
  • Označite in položite vdolbino za bivanje RTC in mikro krmilnika.
  • Kanal speljite od zunanjih vodov do vdolbine za žice

Korak: Tako veliko spajkanja, rezanja in odstranjevanja

Tako veliko spajkanja, rezanja in odstranjevanja
Tako veliko spajkanja, rezanja in odstranjevanja
Tako veliko spajkanja, rezanja in odstranjevanja
Tako veliko spajkanja, rezanja in odstranjevanja
Tako veliko spajkanja, rezanja in odstranjevanja
Tako veliko spajkanja, rezanja in odstranjevanja

Ta naslednji del je veliko lažje reči kot narediti. Moj nasvet bi bil opomba, da pohitite. poskusite najti sistem in vstopite v ritem.

Vsaka od LED diod potrebuje 5 voltov, 5 voltov ven, vhod podatkov, izhod podatkov, ozemljitev in ozemljitev. vključno z napajanjem mikro krmilnika in RTC -jevih več kot 400 žic, vse odstranjene in spajane na obeh koncih.

Lepljiva modra snov je zelo uporabna za ta korak.

  • Začel sem z namestitvijo dveh LED v njihove luknje drug poleg drugega, da bi ugotovili dolžino žice, ki je potrebna za medsebojno povezavo.
  • Z uporabo prvega kosa žice kot vodila sem nato izrezal 60 vsake barvne žice.
  • Odstranite 2 mm rokava s koncev vsake žice in jih kosite s spajkanjem.
  • Na vsako LED ploščico spajkajte majhen del spajkanja.
  • Spajate žice z LED diodami, da tvorite dve verigi po 60 minut in sekund ter eno verigo po 12 ur. Uporabil sem rdečo žico za 5V, rumeno za podatke in modro za ozemljitev.
  • Pazite, da povežete vsak podatkovni izhod (DOUT) s podatkovnim vhodom (DIN) naslednje LED
  • Zadnji vodnik v vsakem odmerku verige ne potrebuje žice za prenos podatkov.

Ko so vse verige končane, je dobro, da jih pred namestitvijo preizkusite. Za preverjanje delovanja vsake LED sem uporabil svoj Arduino UNO in Adafruit NeoPixel Strand Test.

Spajkajte daljše žice na vsako od verig za 5V, ozemljitev in podatkovni vhod.

Na tej točki bi moralo biti pet žic 5V, tri podatkovne žice povezane z Arduino Pro Mini in 5 ozemljitvenih žic.

Odstranite 5 mm s koncev 5 -voltnih žic in jih vse skupaj spajkajte ter ponovite za ozemljitvene žice.

Po zaključku treh verig spajkajte 5V žico na RAW pin Arduino Pro Mini in tudi na pin VCC za RTC. Ozemljitvena žica za GND na Arduino Pro Mini in RTC in nato še 2 žici:

SCL od RTC do A5 na Pro Mini

SDA od RTC do A4 na Pro Mini

Podatkovni vodi iz LED diod morajo biti povezani z:

  • Sekunde - digitalni pin 3.
  • Minute - DigitalPin 4
  • Ure - DigitalPin 5

4. korak: Namestitev

Namestitev
Namestitev
Namestitev
Namestitev
Namestitev
Namestitev

Ko jih spajkate, mora biti namestitev LED v njihove luknje naravnost naprej. Ko gledate od zadaj, ko so kode nastavljene spredaj, morajo biti svetleče diode nameščene tako, da se podatki premikajo v nasprotni smeri urinega kazalca.

Za držanje sem uporabil majhno količino vročega lepila, saj želim zamenjati eno samo LED, če v prihodnosti ne uspe.

Uporabil sem tudi vroče lepilo, da sem ohranil vse žice čiste in urejene ter pritrdil cevni priključek na ploščo.

Na voljo so številni priročniki za programiranje arduino pro mini. Za nalaganje te kode na Arduino uporabljam metodo zunanjega pretvornika USB v serijski:

Ta koda bo nastavila tudi čas v RTC na čas, ko je bila sestavljena. zato je pomembno, da preprosto zaprete gumb za nalaganje, da bo skladen in naložen čim hitreje.

Večino te kode si je Andy Doro sposodil pri obroču NeoPixel Ring Clock. Nekaj iz Adafruit NeoPixel Strand testa in nekaj sem jih sestavil skupaj.

Namestiti morate nekaj knjižnic. Na voljo so pri upravitelju knjižnic v programski opremi Arduino.

Adapruit NeoPixel za LED diode ws2812b

Žica za pogovor z RTC prek I2C (ta je vgrajen kot standard)

in RTClib, ker vesta, kaj vprašati RTC

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

pregled zgodovine

Datum Do Kaj

20140320 AFD Prvi osnutek 20160105 AFD Zbledeli loki 20160916 AFD Trinket združljiv 20170727 AFD dodan STARTPIXEL za ohišje 3D, spremenljivo izhodišče, dodana samodejna podpora DST 20180424 AFD z uporabo knjižnice DST https://github.com/andydoro/DST_RTC *

/ vključite kodo knjižnice:

#include #include

#vključi

// definiramo zatiče

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

#define BRIGHTNESS 20 // nastavite največjo svetlost

#define r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // Vzpostavitev predmeta ure

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // trak predmet

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // trak predmet Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // odstrani bajt objekta pixelColorRed, pixelColorGreen, pixelColorBlue; // vsebuje barvne vrednosti

void setup () {

Wire.begin (); // Začni I2C rtc.begin (); // začni uro

Serial.begin (9600);

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

if (rtc.lostPower ()) {

Serial.println ("RTC je izgubil moč, nastavimo čas!"); // naslednja vrstica nastavi RTC na datum in čas, ko je bila skica sestavljena rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Ta vrstica nastavi RTC z izrecnim datumom in časom, na primer za nastavitev // 21. januarja 2014 ob 3. uri, ki bi jo poklicali: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Inicializirajte vse slikovne pike na "off"

// zagonsko zaporedje

zamuda (500);

colorWipeS (stripS. Color (0, g, 0), 5); // modra colorWipeM (stripM. Color (r, 0, 0), 5); // Modra barvaWipeH (stripH. Color (0, 0, b), 50); // Modra

zamuda (1000);

DateTime theTime = rtc.now (); // upošteva bajt DST secondval = theTime.second (); // dobimo sekundni bajt minuteval = theTime.minute (); // dobimo minute int hourval = theTime.hour (); hourval = hourval % 12; // Ta ura je 12 ur, če je 13-23, pretvorite v 0-11`

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

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

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

}

void loop () {

// dobimo čas

DateTime theTime = rtc.now (); // upošteva letni čas

byte secondval = theTime.second (); // dobimo sekunde

bajt minuteval = theTime.minute (); // dobimo minute int hourval = theTime.hour (); // dobimo ure hourval = hourval % 12; // Ta ura je 12 ur, če je 13-23, pretvorite v 0-11`

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

stripM.setPixelColor (minutni interval, 0, g, 0);

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

stripH.setPixelColor (urni čas, r, 0, 0);

stripH.show (); zamuda (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);}} // za serijsko odpravljanje napak Serial.print (hourval, DEC); Serial.print (':'); Serial.print (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }

// Pike napolnimo eno za drugo z barvo

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

void colorWipeM (uint32_t c, uint8_t čakanje) {

for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); zamuda (čakanje); }}

void colorWipeH (uint32_t c, uint8_t čakanje) {

for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); zamuda (čakanje); }}

5. korak: Zadnji dotiki

Image
Image
Zadnji dotiki
Zadnji dotiki

Zdaj mora le še pritrditi RTC in mikro krmilnik v vdolbino.

Baterijo RTC sem namestil navzgor, tako da lahko po potrebi enostavno zamenjam baterijo.

Priključite žice 5V na + stran konektorja in ozemljitev na - stran

Vklopite!

Moj imam priključen na banko baterij USB, vendar bi polnilnik USB za telefon deloval prav tako.

Opomba:

Svetlost LED je nastavljena v kodi. Nastavljeno je bilo nizko, da je trenutni žreb nizek. Pri polni svetlosti z vsemi prižganimi LED diodami lahko črpa skoraj 8 amperov. S trenutno nastavitvijo je manj kot 1.

Natečaj za ure
Natečaj za ure
Natečaj za ure
Natečaj za ure

Podprvak na tekmovanju ure

Priporočena: