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, Studeni
Anonim
Kriptični zidni sat
Kriptični 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 je sat inspiriran Mengenlehreuhrom pronađenim u Berlinu u Njemačkoj i može se čitati na isti način. Baš kao i izvornik, on prikazuje vrijeme pomoću osvijetljenih polja u boji.

Sadrži 96 LED dioda koje osvjetljavaju 52 'znamenkasta' područja. Za razliku od originala, ima kružni dizajn koji uključuje sekundni prsten, umjesto vodoravnog izgleda šipke. Vanjski pojas označava sekunde zajedno sa srednjom točkom, sljedeća dva pojasa označavaju minute, a posljednji unutarnji rasponi označavaju sate.

Ako imate malo 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 ovaj projekt ako bih ga napravio ponovo. Prvo bih okvir i LED ploču obojila u bijelu umjesto u crnu. To bi reflektiralo više svjetla kroz veliku leću sprijeda. Također bih pričekao kraj da ubacim LED diode. Trebalo mi je da ploča bude završena ranije kako bi mi mogla pomoći pri pisanju koda. Sklonimo to s puta, prvo naučimo kako to čitati!

Slika
Slika

Korak 1: Kako čitati sat

Sat se čita iz unutarnjih krugova prema vanjskom. Unutarnji prsten od četiri polja označava svako po pet punih sati, zajedno s drugim prstenom, također četiri polja, koja označavaju po jedan puni sat, prikazujući vrijednost sata u 24-satnom 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 označavajući neparne (kada svijetli) ili parne (kada ne svijetli) sekunde.

Slika
Slika

Na primjer, gornja slika ima 1 od petsatnih znamenki, 3 jednosatne znamenke, 8 od petminutnih 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

Slika
Slika

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

Slika
Slika

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

Elektronički materijali:

  • Arduino Nano
  • Sat u realnom vremenu
  • Adresirane LED diode
  • Utičnica
  • 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 nema dostupnih, ovdje možete pronaći dovoljno velik list)
  • Tekućina za nanošenje zatamnjivanja prozora (koristila sam vodu pomiješanu s dječjim šamponom u bočici s raspršivačem)
  • Windex
  • Mesarski papir
  • Vijci
  • Ljepilo u spreju
  • Ljepilo
  • Ljepilo

Alati:

  • Vladar
  • Xacto nož
  • Traka
  • Dvostrana traka
  • Kompas
  • Žiga za rezanje krugova
  • Jigsaw
  • Pila
  • Vretenasta brusilica
  • Palm Sander
  • Brusilica za diskove
  • Tablica usmjerivača
  • Šilo
  • Bušilica i svrdla/odvijači
  • Stezaljke
  • Lemilica
  • Lem
  • Skidači žica

Korak 3: Sastavite predloške

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

Za veliki predložak ispišite ga pomoću postavke plakata 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. Ubodnom pilom 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. Umetnite čavao u središte predloška kako biste ga centrirali na krug.

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

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

Korak 8: Brušenje

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

Pomoću brusnog papira nanesenog na štap, vretenastu brusilicu i brusilicu za dlanove izbrusite i izgladite grubi rez koji je ostavio ubodna pila.

Korak 9: Bušilice drže 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 LED dioda. Koristio sam vodič kako bih svrdlo zadržao okomito na svoj radni komad, a ploču za podupiranje kako ne bih ispuhao drvo na stražnjoj strani.

Korak 10: Kombinirajte ploče

Kombinirajte ploče
Kombinirajte ploče
Kombinirajte ploče
Kombinirajte ploče
Kombinirajte ploče
Kombinirajte ploče

Zamijenite prednju i stražnju ploču i pronađite dijelove okvira na stražnjoj strani LED ploče. Pomaknite okvir natrag 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 toliko da ne morate rezati žice, osim prelaska iz jednog kruga u drugi.

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

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 predloška "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 čavlima.

Nakon što se osuši, izbrusite rub u ravnini brusilicom.

Korak 13: Boja

Boja
Boja
Boja
Boja
Boja
Boja
Boja
Boja

Bojom u spreju i LED ploču i okvir. Da sam ovo ponovno radio, odabrao bih bijelu boju umjesto crne jer bi ona više reflektirala kroz leću.

Korak 14: Segment 2

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

Izrežite 9 segmenata iz predloška "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 predloška "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. Time ćete učvrstiti 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 dijela velikog prstena. Izbrusite unutarnju i vanjsku stranu prstena i popunite sve pukotine koje su se mogle pojaviti tijekom procesa lijepljenja.

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

Korak 17: Izrežite akril

Rezati akril
Rezati 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 središte. Pričvrstite akril dvostranom trakom. Pomoću glodala za ispiranje uklonite višak akrila

Korak 18: Nanesite nijansu prozora

Nanesite nijansu prozora
Nanesite nijansu prozora
Nanesite nijansu prozora
Nanesite nijansu prozora
Nanesite nijansu prozora
Nanesite nijansu prozora

U okruženju bez prašine, uklonite zaštitni film s akrila. Nanesite sprej i uklonite podlogu s nijanse prozora. Nanesite zatamnjivanje prozora ljepljivom stranom prema dolje. Gumbom ili kreditnom karticom istisnite svu tekućinu ispod zavjese. Nakon što uklonite sve mjehuriće i bore, oštrim nožem podrežite višak nijansi 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 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 vrpcu 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 i u LED ploču izbuši rupa. To bi trebalo biti otprilike 1 1/8 in. Od stražnje strane. Pazite da ne probušite LED diodu. Uvrnite 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

Ljepljiva sidrišta pokazuju stražnju stranu sata na koju se može pričvrstiti stražnji poklopac. Oni su debeli 3/4 inča i dugi oko 2 inča.

Korak 23: Rupe za bušenje snage i LDR osjetnika

Snaga bušenja i LDR osjetnički otvori
Snaga bušenja i LDR osjetnički otvori

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č elektronike
Instalirajte držač elektronike
Instalirajte držač elektronike
Instalirajte držač elektronike

Instalirajte 3D ispisani držač za RTC i Arduino Nano. Spojite svu elektroniku kako je prikazano na shemi.

Korak 25: Zadnji poklopac

Stražnji poklopac
Stražnji poklopac
Stražnji poklopac
Stražnji poklopac
Stražnji poklopac
Stražnji poklopac
Stražnji poklopac
Stražnji poklopac

Izrežite stražnji poklopac od tanke šperploče samo manje od vanjske strane sata. Izbušite rupe u točkama sidrenja. Pronađite središte leđa i izmjerite 8 inča u bilo kojem smjeru da biste izrezali ključanice (standard 16 u središtima 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 sam prilično nov u korištenju mnogih Arduino knjižnica koje se ovdje koriste pa sam siguran da postoje bolji načini za njihovo korištenje.

Napisao sam kôd koji se može lako ažurirati na temelju toga koliko LED dioda koristite ako se projekt 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 na temelju generatora slučajnih brojeva koji ima na ploči.

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

Kôd slobodno uređujte i mijenjajte kako želite.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = false; boolean printTime = false; // Postavite na true ako želite vidjeti izlaz u konzoli. Korisno za ispravljanje pogrešaka. boolean redDown = true; boolean greenDown = false; boolean blueDown = false; booleov ciklus = false; // Postavi vrijednost true ako želite da boje sata ciklusiraju 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 kako 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 minuta1 = 0; int minuta2 = 0; int druga1 = 0; int drugi2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t svijetlo = 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; // Definiraj niz 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 pokretanja animate (nasumičnost); } void loop () {// Get time DateTime now = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Pomoću njih ručno namjestite vrijeme bez RTC -a. Korisno za ispravljanje pogrešaka // currentHour = 5; // trenutna minuta = 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 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Ovo će računati ukupnu LED diodu za vremensku jedinicu 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 za vremensku jedinicu 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; // Ovim će se računati ukupna LED dioda 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 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Ovim će se računati ukupna LED dioda 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 drugu 2 sekundu2 = 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 (); // Ispis trenutnog vremena na konzolu 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 (crveno, zeleno, plavo); za (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (crveno, zeleno, plavo); ako (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {LED diode [MINUTE_1_START_LOCATION + i] = CRGB (crveno, zeleno, plavo); } ako (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [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 (odaberite == 3) {leds [0] = CRGB (crveno, zeleno, plavo); 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 = netočno; greenDown = istina; }} else if (greenDown == true && blueDown == false) {green ++; plava--; if (plavo <= 0) {zeleno = 255; greenDown = netočno; blueDown = istina; }} else if (blueDown == true && redDown == false) {blue ++; Crvena--; if (crveno <= 0) {plavo = 255; blueDown = false; redDown = istina; }}} else {red = 0; zelena = 0; plava = 255; }} // Ispis na serijski monitor funkcija void printToConsole () {Serial.print ("Trenutno vrijeme:"); 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 (leds ); 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 (leds ); 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

Slika
Slika

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

Preporučeni: