Sadržaj:

Tajanstveni zidni sat: 27 koraka (sa slikama)
Tajanstveni zidni sat: 27 koraka (sa slikama)

Video: Tajanstveni zidni sat: 27 koraka (sa slikama)

Video: Tajanstveni zidni sat: 27 koraka (sa slikama)
Video: Moja omiljena veličina Pe***a 2024, Juli
Anonim
Tajanstveni zidni sat
Tajanstveni zidni sat

Prolazak vremena je nešto što ne možemo kontrolirati. To se događa istom brzinom ako spavamo, budni smo, dosadno ili smo zaručeni. S trenutnim događajima važno je zapamtiti da će vrijeme proći. Dok čekamo da prođe vrijeme, zašto ne bismo učinili nešto što čini protok vremena privlačnijim za gledanje.

Ovaj sat inspiriran je Mengenlehreuhrom pronađenim u Berlinu u Njemačkoj i može se čitati na isti način. Baš kao i original, on prikazuje vrijeme pomoću osvijetljenih, obojenih polja.

Sadrži 96 LED dioda koje osvjetljavaju 52 'znamenkaste' regije. Za razliku od originala, odlikuje ga kružni dizajn koji uključuje sekundni prsten, umjesto vodoravne šipke. Vanjski pojas označava sekunde zajedno sa srednjom točkom, sljedeće dvije vrpce označavaju minute, a posljednji unutarnji rasponi označavaju sate.

Ako imate nešto otpadnog materijala i dodatno vrijeme, zašto ne iskoristite ovo vrijeme da napravite nešto što će to pokazati!

Postoji nekoliko promjena koje bih napravio u ovom projektu da to učinim ponovo. Prvo bih obojila okvir i LED ploču u bijelo umjesto u crno. To bi reflektiralo više svjetla kroz veliko sočivo sprijeda. Takođe bih sačekao kraj da ubacim LED diode. Trebalo mi je da ploča bude završena ranije kako bi mi pomogla pri pisanju koda. Sklonimo to s puta, prvo naučimo kako to čitati!

Image
Image

Korak 1: Kako očitati sat

Sat se očitava iz unutrašnjeg kruga prema vanjskom. Unutrašnji prsten od četiri polja označava svako po pet punih sati, pored drugog prstena, takođe četiri polja, koja označavaju po jedan pun sat, prikazujući vrijednost sata u 24-časovnom formatu. Treći prsten sastoji se od jedanaest polja koja označavaju po pet punih minuta, sljedeći prsten ima još četiri polja koja označavaju po jednu punu minutu. Konačno, vanjski prsten od 29 polja označava parne sekunde sa svjetlom u sredini koje treperi kako bi označilo neparne (kada svijetli) ili parne (kada ne svijetli) sekunde.

Image
Image

Na primjer, gornja slika ima 1 od pet sati broja, 3 cifre od jednog sata, 8 od petominutnih znamenki, 4 jednominutne znamenke i 23 od dvije druge znamenke i srednju drugu znamenku.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 AM

Image
Image

Gore prikazano vrijeme je: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11 PM

Image
Image

Gore prikazano vrijeme je: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33 PM

Korak 2: Alati i materijali

Alati i materijali
Alati i materijali
Alati i materijali
Alati i materijali
Alati i materijali
Alati i materijali

Materijali za elektroniku:

  • Arduino Nano
  • Sat u realnom vremenu
  • Adresirane LED diode
  • Utikač za napajanje
  • Kabel za napajanje
  • USB utikač za napajanje
  • Otpornik ovisan o svjetlu i uravnoteženi otpornik (ako želite da se noću priguši)
  • Žica

Materijali za obradu drveta:

  • 3/4 in. Šperploča
  • Tanka šperploča
  • Staro drvo (koristio sam 2x4s, ali i tvrdo drvo bi radilo)
  • Boja
  • Akril 30 x 36 inča. List (dostupan u lokalnoj trgovini za poboljšanje doma)
  • Nijansa prozora (pokušajte izvorno izvršiti lokalno. Ako nijedan nije dostupan, ovdje možete pronaći dovoljno veliki list)
  • Tekućina za nanošenje zatamnjivanja prozora (koristila sam vodu pomiješanu sa šamponom za bebe u bočici sa raspršivačem)
  • Windex
  • Mesarski papir
  • Screws
  • Ljepilo u spreju
  • Ljepilo
  • Ljepilo

Alati:

  • Vladar
  • Xacto nož
  • Tape
  • Dvostrana traka
  • Kompas
  • Kružni nož za rezanje
  • Jigsaw
  • Tračna pila
  • Vretenasta brusilica
  • Palm Sander
  • Brusilica za diskove
  • Tabela rutera
  • Awl
  • Bušilice i burgije/odvijači
  • Stezaljke
  • Lemilica
  • Solder
  • Strojevi za skidanje žice

Korak 3: Sastavite predloške

Sastavite predloške
Sastavite predloške
Sastavite predloške
Sastavite predloške

Za veliki predložak odštampajte ga koristeći postavku postera u Adobe Readeru. Odrežite margine za svaki papir i zalijepite zajedno. Okomite, vodoravne i dijagonalne linije pomoći će u postavljanju predloška. Sve stranice imaju male brojeve na sebi kako bi bile lakše organizirane ako ispadnu iz reda.

Svi potrebni predlošci i datoteke nalaze se u koraku 26.

Korak 4: Grubo izrezani krugovi

Grubo izrezani krugovi
Grubo izrezani krugovi
Grubo izrezani krugovi
Grubo izrezani krugovi

Postavljajući dva predloška na list šperploče od 3/4 inča, kompasom nacrtajte krugove malo veće nego što je potrebno. Pomoću ubodne pile izrežite grubi oblik.

Korak 5: Izrežite na veličinu

Izrežite na veličinu
Izrežite na veličinu
Izrežite na veličinu
Izrežite na veličinu

Pomoću ubodnog rezača za rezanje krugova izrežite krugove do konačne veličine.

Korak 6: Primijenite predložak

Primijeni predložak
Primijeni predložak
Primijeni predložak
Primijeni predložak
Primijeni predložak
Primijeni predložak

Ljepilom u spreju nanesite svaki predložak na krug. U sredinu šablona umetnite ekser da biste ga centrirali po krugu.

Korak 7: Izrežite predložak

Izrežite predložak
Izrežite predložak
Izrežite predložak
Izrežite predložak
Izrežite predložak
Izrežite predložak

Pomoću ubodne testere izrežite svaki pojedinačni prozor predloška. Ako imate pristup CNC -u, ovaj korak bi bio mnogo lakši! Izbušio sam rupu u svakom prozoru kako bih pomogao u ovom procesu. Kad počnete s rezanjem, predložak može početi skidati. Ako se to dogodi, možete ga pričvrstiti malim komadima trake.

Korak 8: Brušenje

Brušenje
Brušenje
Brušenje
Brušenje
Brušenje
Brušenje

Koristeći brusni papir nanesen na štap, vretenastu brusilicu i brusilicu za dlanove, izbrusite i izgladite grubi rez koji je ostavio ubodna testera.

Korak 9: Bušilice za LED diode

Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode
Držači za bušilice za LED diode

Označite središte svake rupe šilom i izbušite rupe za zračenje za LED diode. Koristio sam vodič da pomognem da bušilica ostane okomita na radni komad i podupirač da spriječim ispuhavanje drva na stražnjoj strani.

Korak 10: Kombinirajte ploče

Kombinujte ploče
Kombinujte ploče
Kombinujte ploče
Kombinujte ploče
Kombinujte ploče
Kombinujte ploče

Zamijenite prednju i stražnju ploču i pronađite dijelove okvira na stražnjoj strani LED ploče. Pomaknite okvir nazad na prednju stranu LED ploče i izbušite rupe te zajedno pričvrstite komade.

Za više informacija pogledajte slikovne bilješke.

Korak 11: Umetnite LED diode

Umetnite LED diode
Umetnite LED diode
Umetnite LED diode
Umetnite LED diode

Gurnite LED diode kroz stražnju stranu LED ploče. Rupe bi trebale biti razmaknute dovoljno da ne morate presijecati žice osim prelaska iz jednog kruga u drugi.

Sa stražnje strane, LED diode počinju u sredini, a zatim idu suprotno od smjera kazaljke na satu, pa do sljedećeg zvona.

Korak 12: Priložite segment 1

Priloži segment 1
Priloži segment 1
Priloži segment 1
Priloži segment 1
Priloži segment 1
Priloži segment 1

Izrežite 9 segmenata iz šablona "Segment 1" pričvršćenog na 3/4 in. Šperploče (pronađeno u koraku 26). Pričvrstite na LED ploču ljepilom i stezaljkama. Ako ste nestrpljivi, možete ga pričvrstiti i ekserima.

Nakon što se osuši, brusite rubove u ravnini brusilicom.

Korak 13: Boja

Boja
Boja
Boja
Boja
Boja
Boja
Boja
Boja

Bojom u spreju i LED ploču i okvir. Da ovo radim ponovo, odabrao bih bijelu boju umjesto crne jer bi ona više reflektirala kroz objektiv.

Korak 14: Segment 2

Segment 2
Segment 2
Segment 2
Segment 2
Segment 2
Segment 2

Izrežite 9 segmenata iz šablona "Segment 2" pričvršćenog od drveta debljine 2 3/8 inča (pronađeno u koraku 26). Koristio sam otpatke 2x4 iz cijele trgovine. Segmente suho pričvrstite i osigurajte da dobro pristaju stezaljkom za traku. Ako se sve provjeri, izvana prekrijte slikarsku traku kako se ljepilo ne bi zalijepilo i ostavite da se osuši najmanje sat vremena prije nego prijeđete na sljedeći korak.

Korak 15: Segment 3

Segment 3
Segment 3
Segment 3
Segment 3
Segment 3
Segment 3

Izrežite 9 segmenata iz šablona "Segment 3" pričvršćenog od 3/8 inča debelog otpada (pronađeno u koraku 26). Zalijepite ih tako da šavovi iz segmenta 2 budu na sredini svakog segmenta 3. Ovo će ojačati prsten.

Korak 16: Glatki prsten i boja

Glatki prsten i boja
Glatki prsten i boja
Glatki prsten i boja
Glatki prsten i boja

Napravio sam prilagođeni blok za brušenje od izrezanog komada velikog prstena. Izbrusite unutrašnju i vanjsku stranu prstena i popunite sve pukotine koje su se mogle pojaviti tokom procesa lijepljenja.

Kad zagladi, nanesite nekoliko slojeva crne boje i prozirni sloj.

Korak 17: Izrežite akril

Rezani akril
Rezani akril
Rezani akril
Rezani akril
Rezani akril
Rezani akril
Rezani akril
Rezani akril

Izrežite akril na kvadrat dimenzija 30 x 30 inča i označite sredinu. Pričvrstite akril dvostranom trakom. Pomoću glodala za ispiranje uklonite višak akrila

Korak 18: Primijenite nijansu prozora

Primijeni nijansu prozora
Primijeni nijansu prozora
Primijeni nijansu prozora
Primijeni nijansu prozora
Primijeni nijansu prozora
Primijeni nijansu prozora

U okruženju bez prašine, uklonite zaštitni film sa akrila. Nanesite sprej i uklonite podlogu sa zastora prozora. Nanesite zatamnjivanje prozora ljepljivom stranom prema dolje. Gumbom ili kreditnom karticom istisnite svu tekućinu ispod zastora na prozoru. Kada uklonite sve mjehuriće i bore, oštrim nožem obrežite višak zatamnjivanja prozora.

Korak 19: Priključite defuser

Priključite defuser
Priključite defuser
Priključite defuser
Priključite defuser

Koristio sam veliki komad mesarskog papira da djelujem kao odmagljivač. Papir položite na ravnu površinu. Pokrijte lice okvira ljepilom iz štapića za ljepilo. Prije nego što se ljepilo osuši, položite prednji dio sata licem prema dolje na papir i grubo izrežite višak. Kad se osuši, oštrim nožem podrežite ispiranje.

Korak 20: Nanesite izolaciju

Nanesite izolaciju
Nanesite izolaciju

Koristio sam električnu traku kako bih odvojio napajanje i podatkovne vodove.

Korak 21: Sastavite

Sastavite
Sastavite
Sastavite
Sastavite
Sastavite
Sastavite

Uklonite drugi zaštitni sloj s akrila. Stavite akril unutar prstena tako da prozor bude okrenut prema gore. Gurnite ostatak sata u prsten. Stezaljkom primijenite lagani pritisak dok se kroz prsten izbuši rupa u LED ploču. To bi trebalo biti otprilike 1 1/8 in. Od stražnje strane. Pazite da ne probušite LED diodu. Uvrtite vijak s rešetkom u rupu. Ponovite za ukupno osam vijaka po obodu sata.

Korak 22: Pričvrstite sidrene točke

Pričvrstite sidrene točke
Pričvrstite sidrene točke

Ljepljive sidrene tačke na stražnjoj strani sata na koje se može pričvrstiti stražnja maska. One su debljine 3/4 inča i dugačke oko 2 inča.

Korak 23: Rupe za bušenje i LDR senzor

Rupe za bušenje i LDR senzor
Rupe za bušenje i LDR senzor

Izbušite otvor za napajanje kroz donji dio sata za utikač i otvor na vrhu za osjetnik otpornika ovisnog o svjetlu (LDR).

Korak 24: Instalirajte držač elektronike

Instalirajte držač za elektroniku
Instalirajte držač za elektroniku
Instalirajte držač za elektroniku
Instalirajte držač za elektroniku

Instalirajte 3D štampani držač za RTC i Arduino Nano. Priključite svu elektroniku kako je prikazano na shemi.

Korak 25: Zadnji poklopac

Zadnji poklopac
Zadnji poklopac
Zadnji poklopac
Zadnji poklopac
Zadnji poklopac
Zadnji poklopac
Zadnji poklopac
Zadnji poklopac

Izrežite stražnji poklopac od tanke šperploče, samo manje od vanjske strane sata. Izbušite rupe u tačkama sidra. Pronađite središte leđa i izmjerite 8 inča u oba smjera da biste izrezali ključanice (standardno 16 u centrima za klinove u SAD -u). Izbušio sam glavnu rupu samo veću od glave vijaka koje ću upotrijebiti i otvorio rupu veću u jednom smjeru. Obojite crnu boju i pričvrstite poklopac na mjesto.

Korak 26: Kôd i datoteke

Opet, prilično sam nov u korištenju mnogih Arduino biblioteka koje se ovdje koriste pa sam siguran da postoje bolji načini za njihovo korištenje.

Napisao sam kôd koji se lako ažurira na osnovu toga koliko LED dioda koristite ako se projekat povećava ili smanjuje. Sve što trebate učiniti je ažurirati početni i završni položaj LED dioda, kao i koliko LED dioda je dio svake znamenke.

Dodao sam nekoliko animacija koje se reproduciraju pri pokretanju, kao i na sat. Oni su sudo slučajni, zasnovani na generatoru slučajnih brojeva koji ima na ploči.

Možete podesiti sat da se kreće kroz boje ili da ostane statičan na jednoj. Možete čak i označiti cifru indikatora kako biste lakše očitali vrijeme kako je prikazano u uvodu.

Slobodno uredite i promijenite kôd kako želite.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; logičko vrijemeChange = false; boolean printTime = false; // Postavite na true ako želite vidjeti izlaz u konzoli. Korisno za otklanjanje grešaka. boolean redDown = true; boolean greenDown = false; boolean blueDown = false; logički ciklus = false; // Postavi vrijednost true ako želite da boje sata mijenjaju boolean highlight = true; // Postavljeno na true za označavanje 'zadnje znamenke'. // Lokacije početka i kraja svake grupe vremena const int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Množitelji koji se koriste za podjelu vremena const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Promijenite ovo da biste ubrzali ili usporili animaciju pri pokretanju const int CYCLE_SPEED = 1; // Ovdje mijenjamo brzinu za ciklus promjene boje (mora biti iznad 1) // Deklarirati varijable int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int sat1 = 0; int sat2 = 0; int minute1 = 0; int minute2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t sjajno = 255; int numberOfAnimations = 5; int slučajnost = 0; // Postavljanje boja uint8_t red = 0; uint8_t zelena = 0; uint8_t plavo = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Definiranje niza LED dioda CRGB LED dioda [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (LED diode, NUM_LEDS); LEDS.setBrightness (svijetlo); FastLED.clear (); rtc.begin (); // Uncomment line ispod za postavljanje vremena. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Animacija pri pokretanju animate (nasumičnost); } void loop () {// Get time DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Koristite ih za ručno postavljanje vremena bez RTC -a. Korisno za otklanjanje grešaka // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Vraćanje svih bitova na nulu za (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Postavi sat // Postavi sat 1 sat1 = (trenutni sat % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Ovo će računati ukupnu LED diodu vremenske jedinice koja će zasvijetliti (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1 - 1); i> = (HOUR_1_START_LOCATION + sat1-LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Postavi sat 2 sata2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Ovo će računati ukupnu LED diodu vremenske jedinice koja će zasvijetliti (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + sat2-LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Postavi minutu // Postavi minutu 1 minutu1 = (trenutna minuta % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Ovo će računati ukupnu LED diodu vremenske jedinice koja će zasvijetliti (int i = MINUTE_1_START_LOCATION; i 0) // && minuta1 <24) {for (int i = (MINUTE_1_START_LOCATION + minuta1 - 1); i> = (MINUTE_1_START_LOCATION + minuta1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Postavi minutu 2 minute2 = (trenutna minuta / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Ovo će računati ukupnu LED diodu vremenske jedinice koja će zasvijetliti (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + minuta2 - 1); i> = (MINUTE_2_START_LOCATION + minuta2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Postavi drugo if (currentSecond! = LastSecond) {timeChange = true; } // Postavi drugu 1 sekundu1 = currentSecond % MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (crveno, zeleno, plavo); } // Postavi 2 sekunde2 = currentSecond / MULTIPLIER_TWO; za (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Brojanje ciklusa programa i pozivanje funkcije setColor za promjenu boje LED -a ikada CYCLE_SPEED ciklusa. if (ciklusCount svijetlo) // {// fadeValue = svijetlo; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Štampa trenutno vrijeme na konzoli if (timeChange == true && printTime == true) {printToConsole (); }} // Funkcija animacije ovdje dodaje još animacija po želji. Void animate (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (crvena, zelena, plava); FastLED.show (); kašnjenje (START_UP_DELAY); } za (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Crna; FastLED.show (); kašnjenje (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); LED diode [svjetlo] = CRGB (crveno, zeleno, plavo); FastLED.show (); }} else if (select == 2) {leds [0] = CRGB (red, green, blue); za (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (crveno, zeleno, plavo); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {LED diode [MINUTE_1_START_LOCATION + i] = CRGB (crvena, zelena, plava); } ako (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {LED diode [MINUTE_2_START_LOCATION + i] = CRGB (crveno, zeleno, plavo); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (crveno, zeleno, plavo); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (crveno, zeleno, plavo); } kašnjenje (34); FastLED.show (); }} else if (select == 3) {leds [0] = CRGB (red, green, blue); za (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (crveno, zeleno, plavo); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {LED diode [MINUTE_1_END_LOCATION - i] = CRGB (crvena, zelena, plava); } ako (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {LED diode [MINUTE_2_END_LOCATION - i] = CRGB (crveno, zeleno, plavo); } ako (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (crveno, zeleno, plavo); } ako (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (crveno, zeleno,plava); } kašnjenje (34); FastLED.show (); }} else if (select == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); kašnjenje (200); za (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (crveno, zeleno, plavo); } FastLED.show (); kašnjenje (200); za (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Crna; } FastLED.show (); kašnjenje (200); za (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (crveno, zeleno, plavo); } FastLED.show (); kašnjenje (200); za (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Crna; } FastLED.show (); kašnjenje (200); }} // Funkcija ciklusa boja void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; zelena--; if (zeleno <= 0) {crveno = 255; redDown = false; greenDown = true; }} else if (greenDown == true && blueDown == false) {green ++; plava--; if (plavo <= 0) {zeleno = 255; greenDown = false; blueDown = true; }} else if (blueDown == true && redDown == false) {blue ++; crvena--; if (crveno <= 0) {plavo = 255; blueDown = false; redDown = true; }}} else {red = 0; zelena = 0; plava = 255; }} // Štampaj na serijskom monitoru funkcija void printToConsole () {Serial.print ("Trenutno vreme:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); za (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (LED ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); za (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); if (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); za (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (LED ); if (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); za (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (LED ); if (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); za (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (LED ); Serial.print (""); } Serial.println (""); Serial.println (LED diode [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

Korak 27: Uživajte

Image
Image

Zaključno, ovaj sat je divan za gledanje, a kad se naviknete na njega, relativno ga je lako čitati. Ako napravite vlastiti projekt satova, javite mi!

Preporučuje se: