Cuprins:

Ceas de perete criptic: 27 de pași (cu imagini)
Ceas de perete criptic: 27 de pași (cu imagini)

Video: Ceas de perete criptic: 27 de pași (cu imagini)

Video: Ceas de perete criptic: 27 de pași (cu imagini)
Video: Au Uitat Să Oprească Camera De FILMAT! Momente Incredibile Filmate În LIVE 2024, Noiembrie
Anonim
Ceas de perete criptic
Ceas de perete criptic

Trecerea timpului este ceva ce nu putem controla. Se întâmplă în același ritm dacă dormim, treaz, plictisiți sau logodiți. Cu evenimentele actuale, este important să ne amintim că timpul va trece. În timp ce așteptăm să treacă timpul, de ce să nu facem ceva care să facă trecerea timpului mai atrăgătoare de urmărit.

Acest ceas a fost inspirat de Mengenlehreuhr găsit la Berlin, Germania și poate fi citit în același mod. La fel ca originalul, spune timpul prin câmpuri iluminate, colorate.

Dispune de 96 de LED-uri care luminează regiuni de 52 de cifre. Spre deosebire de original, acesta are un design circular care include un inel de secunde, în loc de un aspect al barei orizontale. Banda exterioară indică secunde împreună cu punctul din mijloc, următoarele două benzi indică minutele, iar benzile interioare finale indică ore.

Dacă aveți niște materiale restante și timp suplimentar pe mâini, de ce să nu folosiți acest timp pentru a face ceva care să-l arate!

Există câteva modificări pe care le-aș face acestui proiect dacă aș face-o din nou. În primul rând, aș vopsi cadrul și placa LED cu alb în loc de negru. Aceasta ar reflecta mai multă lumină prin obiectivul mare din față. Aș mai aștepta până la final pentru a introduce LED-urile. Aveam nevoie ca placa să fie terminată mai devreme, astfel încât să mă poată ajuta cu scrierea codului. Cu asta în afara drumului, să învățăm mai întâi cum să-l citim!

Imagine
Imagine

Pasul 1: Cum să citiți ceasul

Ceasul este citit din cercurile interioare în exterior. Inelul interior al celor patru câmpuri indică cinci ore întregi fiecare, alături de cel de-al doilea inel, de asemenea, din patru câmpuri, care denotă câte o oră completă fiecare, afișând valoarea orei în format de 24 de ore. Al treilea inel este format din unsprezece câmpuri, care denotă cinci minute complete fiecare, următorul inel are alte patru câmpuri, care marchează câte un minut complet fiecare. În cele din urmă, inelul exterior de 29 de câmpuri indică secunde pare, cu lumina din centru intermitent pentru a indica secunde impare (când este aprinsă) sau pare (când este aprinsă).

Imagine
Imagine

De exemplu, imaginea de mai sus are 1 din cele cinci cifre de oră, 3 din cifrele de o oră, 8 din cele cinci minute, 4 din cifrele de un minut și 23 din cele două secunde și a doua cifră din mijloc aprinse.

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

Imagine
Imagine

Timpul de mai sus este: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 PM

Imagine
Imagine

Timpul de mai sus este: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33

Pasul 2: Instrumente și materiale

Instrumente și materiale
Instrumente și materiale
Instrumente și materiale
Instrumente și materiale
Instrumente și materiale
Instrumente și materiale

Materiale electronice:

  • Arduino Nano
  • Ceas în timp real
  • LED-uri adresabile
  • Stecher
  • Cablu de alimentare
  • Mufă de alimentare USB
  • Rezistor dependent de lumină și rezistor echilibrat (dacă doriți să se estompeze noaptea)
  • Sârmă

Materiale pentru prelucrarea lemnului:

  • 3/4 in. Placaj
  • Placaj subțire
  • Resturi de lemn (am folosit 2x4s, dar și lemnul tare ar funcționa)
  • A picta
  • Foaie acrilică de 30 x 36 in (găsită la magazinul local de îmbunătățiri casnice)
  • Nuanță de fereastră (încercați să sursați local. Dacă nu este disponibilă, puteți găsi o foaie suficient de mare aici)
  • Fluid de aplicare a nuanței de fereastră (am folosit apă amestecată cu șampon pentru bebeluși într-o sticlă cu spray)
  • Windex
  • Hârtie de măcelar
  • Șuruburi
  • Adeziv spray
  • Lipici
  • Lipici

Instrumente:

  • Rigla
  • Cuțit Xacto
  • Bandă
  • Bandă cu două fețe
  • Busolă
  • Cerc de tăiere a cercului
  • Jigsaw
  • Bandă ferăstrău
  • Șlefuitor cu arbore
  • Palm Sander
  • Disc Sander
  • Router Table
  • Sulă
  • Burghie și burghie / drivere
  • Cleme
  • Ciocan de lipit
  • Solder
  • Dispozitive de decupare a firelor

Pasul 3: Asamblați șabloane

Asamblați șabloane
Asamblați șabloane
Asamblați șabloane
Asamblați șabloane

Pentru șablonul mare, imprimați-l folosind setarea posterului în Adobe Reader. Tăiați marginile pentru fiecare hârtie și bandă împreună. Liniile verticale, orizontale și diagonale vor ajuta la alinierea șablonului. Toate paginile au un număr mic pe ele, pentru a le menține organizate dacă nu funcționează.

Toate șabloanele și fișierele necesare sunt găsite în Pasul 26.

Pasul 4: Cercuri tăiate aspru

Cercuri tăiate aspru
Cercuri tăiate aspru
Cercuri tăiate aspru
Cercuri tăiate aspru

Așezați cele două șabloane pe o foaie de placaj de 3/4 in, desenați cercuri ceva mai mari decât este necesar cu o busolă. Folosind un ferăstrău, tăiați forma aspră.

Pasul 5: Tăiați la dimensiune

Tăiați la dimensiune
Tăiați la dimensiune
Tăiați la dimensiune
Tăiați la dimensiune

Folosind un dispozitiv de tăiere circular pe ferăstrău, tăiați cercurile la dimensiunea finală.

Pasul 6: Aplicați șablonul

Aplicați șablonul
Aplicați șablonul
Aplicați șablonul
Aplicați șablonul
Aplicați șablonul
Aplicați șablonul

Folosind adeziv spray, aplicați fiecare șablon pe un cerc. Introduceți un cui în centrul șablonului pentru al centra pe cerc.

Pasul 7: Tăiați șablonul

Tăiați șablonul
Tăiați șablonul
Tăiați șablonul
Tăiați șablonul
Tăiați șablonul
Tăiați șablonul

Folosind un ferăstrău, decupați fiecare fereastră individuală a șablonului. Dacă aveți acces la un CNC, acest pas ar fi mult mai ușor! Am forat o gaură în fiecare fereastră pentru a ajuta la acest proces. Pe măsură ce începeți să tăiați, șablonul poate începe să se desprindă. Dacă se întâmplă acest lucru, îl puteți asigura cu bucăți mici de bandă.

Pasul 8: Șlefuire

Șlefuire
Șlefuire
Șlefuire
Șlefuire
Șlefuire
Șlefuire

Folosind hârtie de șlefuit aplicată pe un băț, o șlefuitoare cu ax și o șlefuitoare pentru palmă, șlefuiți și neteziți tăietura aspră lăsată de ferăstrău.

Pasul 9: Prindere pentru foraj pentru LED-uri

Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri
Suporturi de găurire pentru LED-uri

Marcați centrul fiecărei găuri cu un punte și găuriți găurile pentru LED-uri. Am folosit un ghid pentru a menține burghiul perpendicular pe piesa mea de prelucrat și un panou de protecție pentru a evita suflarea lemnului pe spate.

Pasul 10: Combinați panourile

Combinați panourile
Combinați panourile
Combinați panourile
Combinați panourile
Combinați panourile
Combinați panourile

Schimbați plăcile din față și din spate și urmăriți părțile cadrului pe spatele plăcii cu LED-uri. Mutați cadrul înapoi în fața plăcii cu LED-uri și găuriți și înșurubați piesele împreună.

Consultați notele de imagine pentru mai multe informații.

Pasul 11: Introduceți LED-uri

Introduceți LED-uri
Introduceți LED-uri
Introduceți LED-uri
Introduceți LED-uri

Împingeți LED-urile prin partea din spate a plăcii LED. Găurile ar trebui să fie distanțate suficient de mult încât să nu fie nevoie să tăiați firele decât să vă deplasați de la un cerc la altul.

Din spate, LED-urile încep în centru și apoi rulează în sens invers acelor de ceasornic, apoi până la următorul inel.

Pasul 12: Atașați segmentul 1

Atașați segmentul 1
Atașați segmentul 1
Atașați segmentul 1
Atașați segmentul 1
Atașați segmentul 1
Atașați segmentul 1

Decupați 9 segmente din șablonul „Segmentul 1” atașat pe placaj de 3/4 in. (Găsit la pasul 26). Atașați la placa LED cu lipici și cleme. Dacă sunteți nerăbdători, puteți folosi și cuie pentru a-l fixa în poziție.

Odată uscată, șlefuiți marginea cu o șlefuitoare cu discuri.

Pasul 13: Vopsea

A picta
A picta
A picta
A picta
A picta
A picta
A picta
A picta

Vopseați cu spray atât placa LED, cât și cadrul. Dacă aș face din nou acest lucru, aș fi ales să folosesc vopsea albă în loc de negru, deoarece ar fi mai reflectantă prin lentilă.

Pasul 14: Segmentul 2

Segmentul 2
Segmentul 2
Segmentul 2
Segmentul 2
Segmentul 2
Segmentul 2

Decupați 9 segmente din șablonul „Segmentul 2” atașat din lemn cu grosimea de 2 3/8 inchi (găsit la pasul 26). Am folosit câteva resturi 2x4 din jurul magazinului. Montați uscat segmentele și asigurați-vă că se potrivește bine cu o clemă de bandă. Dacă totul se verifică, acoperiți exteriorul cu bandă de vopsea pentru a evita lipirea lipiciului și lăsați-l să se usuce cel puțin o oră înainte de a trece la pasul următor.

Pasul 15: Segmentul 3

Segmentul 3
Segmentul 3
Segmentul 3
Segmentul 3
Segmentul 3
Segmentul 3

Decupați 9 segmente din șablonul „Segmentul 3” atașat din fier vechi gros de 3/8 inchi (găsit la pasul 26). Lipiți-le astfel încât cusăturile din segmentul 2 să fie în mijlocul fiecărui segment 3. Acest lucru va întări inelul.

Pasul 16: Inel și vopsea netede

Inel și vopsea netede
Inel și vopsea netede
Inel și vopsea netede
Inel și vopsea netede

Am făcut un bloc de șlefuire personalizat din bucata decupată a inelului mare. Șlefuiți interiorul și exteriorul inelului și umpleți orice fisuri care ar fi putut apărea în timpul procesului de lipire.

Odată netedă, aplicați câteva straturi de vopsea neagră și strat transparent.

Pasul 17: Tăiați acrilul

Tăiați acrilic
Tăiați acrilic
Tăiați acrilic
Tăiați acrilic
Tăiați acrilic
Tăiați acrilic
Tăiați acrilic
Tăiați acrilic

Tăiați acrilicul într-un pătrat de 30 x 30 in și marcați centrul. Atașați acrilul cu bandă dublă. Folosind un bit de tăiere la nivel, îndepărtați excesul de acril

Pasul 18: Aplicați nuanța ferestrei

Aplicați nuanța ferestrei
Aplicați nuanța ferestrei
Aplicați nuanța ferestrei
Aplicați nuanța ferestrei
Aplicați nuanța ferestrei
Aplicați nuanța ferestrei

Într-un mediu fără praf, îndepărtați folia de protecție din acril. Aplicați spray și îndepărtați suportul din nuanța ferestrei. Aplicați culoarea geamului cu partea lipicioasă în jos. Folosind o racletă sau un card de credit, stoarceți tot lichidul de sub nuanța ferestrei. Odată ce toate bulele și ridurile au fost îndepărtate, tăiați nuanța excesivă a ferestrei cu un cuțit ascuțit.

Pasul 19: Atașați Defuser

Atașați Defuser
Atașați Defuser
Atașați Defuser
Atașați Defuser

Am folosit o bucată mare de hârtie de măcelar pentru a acționa ca un defuser. Așezați hârtia pe o suprafață plană. Acoperiți fața cadrului cu lipici de pe un lipici. Înainte ca adezivul să se usuce, așezați fața ceasului cu fața în jos pe hârtie și tăiați excesiv excesul. Odată uscat, folosiți un cuțit ascuțit pentru a tăia culoarea.

Pasul 20: Aplicați Izolație

Aplicați Izolație
Aplicați Izolație

Am folosit bandă electrică pentru a menține curentul și liniile de date separate.

Pasul 21: Asamblați

Asambla
Asambla
Asambla
Asambla
Asambla
Asambla

Îndepărtați celălalt strat protector din acril. Așezați acrilul în interiorul inelului, cu nuanța ferestrei în sus. Glisați restul ceasului în ring. Folosiți o clemă pentru a aplica o presiune ușoară în timp ce o gaură este forată prin inel și în placa LED. Aceasta ar trebui să fie la aproximativ 1 1/8 inchi din spate. Aveți grijă să nu introduceți un LED. Înșurubați un șurub cu cap de fermă în gaură. Repetați pentru un total de opt șuruburi în jurul perimetrului ceasului.

Pasul 22: Atașați puncte de ancorare

Atașați puncte de ancorare
Atașați puncte de ancorare

Lipiți punctele de ancorare către partea din spate a ceasului pentru a se fixa capacul din spate. Acestea au o grosime de 3/4 in și o lungime de aproximativ 2 in.

Pasul 23: forează forajul și găurile senzorului LDR

Forează forajele și găurile senzorului LDR
Forează forajele și găurile senzorului LDR

Găuriți o gaură de alimentare prin partea inferioară a ceasului pentru fișa de alimentare și o gaură în partea de sus pentru senzorul de rezistență dependentă de lumină (LDR).

Pasul 24: Instalați suportul electronic

Instalați suportul pentru electronice
Instalați suportul pentru electronice
Instalați suportul pentru electronice
Instalați suportul pentru electronice

Instalați suportul imprimat 3D pentru RTC și Arduino Nano. Conectați toate componentele electronice așa cum se arată în schemă.

Pasul 25: Coperta din spate

Coperta din spate
Coperta din spate
Coperta din spate
Coperta din spate
Coperta din spate
Coperta din spate
Coperta din spate
Coperta din spate

Tăiați un capac din spate din placaj subțire doar mai mic decât exteriorul ceasului. Faceți găuri în punctele de ancorare. Găsiți centrul spatelui și măsurați 8 inci în ambele direcții pentru a tăia găurile (standard 16 în centre pentru știfturi în SUA). Am forat gaura principală puțin mai mare decât capul șuruburilor pe care o voi folosi și am aruncat gaura mai mare într-o singură direcție. Vopsiți în negru și atașați capacul la locul său.

Pasul 26: Cod și fișiere

Din nou, sunt destul de nou în ceea ce privește utilizarea multor biblioteci Arduino utilizate aici, așa că sunt sigur că există modalități mai bune de a le utiliza.

Am scris codul pentru a fi ușor actualizat pe baza câte LED-uri utilizați dacă proiectul este scalat în sus sau în jos. Tot ce trebuie să faceți este să actualizați pozițiile de început și de sfârșit ale LED-urilor, precum și câte LED-uri fac parte din fiecare cifră.

Am adăugat câteva animații care se joacă la pornire, precum și la oră. Sunt sudo random bazate pe generatorul de numere aleatorii pe care îl are la bord.

Puteți seta ceasul să circule prin culori sau să rămână static la una. Puteți chiar să evidențiați cifra indicatorului pentru a ajuta la citirea timpului, așa cum se arată în introducere.

Simțiți-vă liber să editați și să modificați codul după cum doriți.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = false; boolean printTime = false; // Setați la adevărat dacă doriți să vedeți ieșirea în consolă. Util pentru depanare. boolean redDown = adevărat; boolean greenDown = false; boolean blueDown = false; ciclu boolean = fals; // Setați adevărat dacă doriți ca culorile ceasului să cicleze evidențierea booleană = adevărat; // Setați true pentru a evidenția „ultima cifră”. // Locații de la începutul și sfârșitul fiecărui grup de timp 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; // Multiplicatori folosiți pentru împărțirea timpului const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Schimbați acest lucru pentru a accelera sau a încetini animația de pornire const int CYCLE_SPEED = 1; // Schimbați rata aici pentru ciclul de schimbare a culorii (trebuie să fie peste 1) // Declarați variabilele int lastSecond = 0; int CurrentHour = 0; int currentMinute = 0; int currentSecond = 0; int ora1 = 0; int hour2 = 0; int minutul 1 = 0; int minute2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t luminos = 255; int numberOfAnimations = 5; int randomness = 0; // Setați culorile uint8_t roșu = 0; uint8_t verde = 0; uint8_t albastru = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Definiți matricea de leduri CRGB [NUM_LEDS]; void setup () {Serial.begin (19200); FastLED.addLeds (leduri, NUM_LEDS); LEDS.setBrightness (luminos); FastLED.clear (); rtc.begin (); // Decomentați linia de mai jos pentru a seta ora. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))); // Start animatie animatie (aleatorie); } void loop () {// Obține ora DateTime acum = rtc.now (); Ora curentă = ora.ora (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // Utilizați-le pentru a seta manual timpul fără RTC. Util pentru depanare // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Resetați toți biții la zero pentru (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Black; } // Set Hour // Set hour 1 hour1 = (currentHour% MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Aceasta va număra LED-urile totale ale unității de timp pentru a se aprinde pentru (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {for (int i = (HOUR_1_START_LOCATION + hour1 - 1); i> = (HOUR_1_START_LOCATION + hour1 - LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Setează ora 2 ora2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Aceasta va număra LED-urile totale ale unității de timp pentru a se aprinde pentru (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + hour2 - LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Set Minute // Set minute 1 minute1 = (currentMinute% MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Aceasta va număra LED-urile totale ale unității de timp pentru a se aprinde (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {for (int i = (MINUTE_1_START_LOCATION + minute1 - 1); i> = (MINUTE_1_START_LOCATION + minute1 - LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Setează minutul 2 minute2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Aceasta va număra LED-urile totale ale unității de timp pentru a se aprinde (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {for (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + minute2 - LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Setați Second if (currentSecond! = LastSecond) {timeChange = true; } // Set second 1 second1 = currentSecond% MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (roșu, verde, albastru); } // Set second 2 second2 = currentSecond / MULTIPLIER_TWO; for (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; // Numărați ciclurile programului și apelați funcția setColor pentru a schimba culoarea LED-urilor cicluri CYCLE_SPEED vreodată. if (cycleCount luminos) // {// fadeValue = luminos; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Imprimați ora curentă în consolă dacă (timeChange == true && printTime == true) {printToConsole (); }} // Funcția de animație adăugați mai multe animații aici, după cum doriți anularea void (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (roșu, verde, albastru); FastLED.show (); întârziere (START_UP_DELAY); } pentru (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; FastLED.show (); întârziere (START_UP_DELAY); }} else if (select == 1) {for (int i = 0; i <250; i ++) {int light = random (95); leduri [lumină] = CRGB (roșu, verde, albastru); FastLED.show (); }} else if (selectați == 2) {leds [0] = CRGB (roșu, verde, albastru); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION + i] = CRGB (roșu, verde, albastru); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (roșu, verde, albastru); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (roșu, verde, albastru); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (roșu, verde, albastru); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (roșu, verde, albastru); } întârziere (34); FastLED.show (); }} else if (selectați == 3) {leds [0] = CRGB (roșu, verde, albastru); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (roșu, verde, albastru); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (roșu, verde, albastru); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (roșu, verde, albastru); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (roșu, verde, albastru); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (roșu, verde,albastru); } întârziere (34); FastLED.show (); }} else if (selectați == 4) {for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); întârziere (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (roșu, verde, albastru); } FastLED.show (); întârziere (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); întârziere (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (roșu, verde, albastru); } FastLED.show (); întârziere (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Black; } FastLED.show (); întârziere (200); }} // Funcția de ciclare a culorilor void setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {red ++; verde--; if (verde <= 0) {roșu = 255; redDown = false; greenDown = adevărat; }} else if (greenDown == true && blueDown == false) {green ++; albastru--; if (albastru <= 0) {verde = 255; greenDown = false; blueDown = adevărat; }} else if (blueDown == true && redDown == false) {blue ++; roșu--; if (roșu <= 0) {albastru = 255; blueDown = false; redDown = adevărat; }}} else {red = 0; verde = 0; albastru = 255; }} // Print to Serial Monitor function void printToConsole () {Serial.print ("Ora curentă:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); for (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); if (i% 2 == 0) {Serial.print (""); }} Serial.println (""); for (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 (""); for (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 (""); for (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 (""); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print (""); } Serial.println (""); Serial.println (leduri [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

Pasul 27: Bucurați-vă

Imagine
Imagine

În concluzie, acest ceas este minunat de vizionat și, odată ce îl obții, este relativ ușor de citit. Dacă îți faci propriul proiect de ceas, anunță-mă!

Recomandat: