Cuprins:

Ceas de pensionare / Count Up / Ceas Dn: 4 pași (cu imagini)
Ceas de pensionare / Count Up / Ceas Dn: 4 pași (cu imagini)

Video: Ceas de pensionare / Count Up / Ceas Dn: 4 pași (cu imagini)

Video: Ceas de pensionare / Count Up / Ceas Dn: 4 pași (cu imagini)
Video: Au Uitat Să Oprească Camera De FILMAT! Momente Incredibile Filmate În LIVE 2024, Noiembrie
Anonim
Ceas de pensionare / Count Up / Dn Clock
Ceas de pensionare / Count Up / Dn Clock

Am avut câteva dintre aceste afișaje cu matrice de puncte LED 8x8 în sertar și mă gândeam ce să fac cu ele. Inspirat de alte instructabile, mi-a venit ideea de a construi un afișaj de numărătoare inversă / în sus pentru a număra înapoi până la o dată / oră viitoare și, dacă timpul țintă a trecut, contorizați din acesta. I-am făcut acum ceasul meu de pensionare așezat pe raft.

Ideea de ao pune într-o sticlă a fost mai degrabă un accident în timp ce ne gândeam la o carcasă. Alții pun corăbiile într-o sticlă, de ce nu un ceas?

De asemenea, am vrut să fac ceasul să respecte ora de vară și bineînțeles să-mi amintesc setările și ora când am fost deconectat. Alimentez ceasul prin USB, ceea ce îl face reprogramabil dacă doriți să faceți ceva diferit sau doar să adăugați caracteristici la cod. Codul este destul de simplu și ar putea folosi, de asemenea, o mulțime de optimizare. Nu am avut mare grijă de consumul de RAM, trebuie să recunosc. Dacă am timp și motivație, voi reveni la asta.

Provizii

1. Arduino Nano

2. RTC (am folosit DS3231 comun care are și EEPROM)

3. Modul matrice de 12x 8x8 puncte. (Am avut modulele quad care sunt mai ușor de aliniat)

4. LDR pentru a regla luminozitatea afișajului

5. Rezistor 10 kOhm

6. Condensator 5x 100 uF suprimând vârfurile de pe afișaj

7. Pentru a crește contrastul modulelor de 8x8, am folosit „Window Film” cu nuanță închisă. Afișajul arată LED-urile ca puncte albe dacă nu sunt aprinse. Filmul pentru fereastră îl transformă într-un aspect negru strălucitor.

Pasul 1: Conectați componentele

Conectați componentele
Conectați componentele
Conectați componentele
Conectați componentele

Am folosit trei dintre afișajele quad pentru a asambla afișajul. Pentru a afișa o dată cu bare oblice și ora cu două puncte, avem nevoie de spațiu pentru 8 caractere. Folosind fontul tipic 5x7, am avea nevoie de șase blocuri de 8x8 pe rând. Am tăiat unul dintre blocurile quad în jumătate și le-am aranjat ca două rânduri pe șase blocuri, așa cum se arată în schema de bord.

Pasul 2: Părți imprimate 3D

Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D
Piese imprimate 3D

Pentru a ține cele două rânduri ale afișajului și a le poziționa în sticlă, am imprimat inele rotunde de distanță pentru cadrul afișajului. Am adăugat fișierele pe care le-am folosit mai jos. Pentru a putea tipări acestea fără suport, acestea sunt împărțite în părți. Captura de ecran arată cele două inele lipite de cadrul afișajului. Capacul gâtului sticlei găzduiește cele trei butoane pentru a comuta între modurile de afișare și setarea orei curente și a timpului țintă. Capacul gâtului sticlei l-am imprimat în TPU permițând să glisați cablul USB în capac fără a tăia conectorii și să-l legați cu câteva înfășurări de sârmă. Am uitat să menționez că am folosit o sticlă de vin de 1,5 L pe care am tăiat-o chiar în partea de jos. Toate piesele care vor fi tipărite se potrivesc pe un pat de imprimantă de 20x20 cm (8x8 in).

Pasul 3: Codul

Codul Arduino folosește câteva biblioteci utilizate în mod obișnuit.

MD_MAX72xx

SPI

Sârmă

RTClib

Fus orar

TimeLib

Există câteva linii în fișierul INO care ar putea necesita modificări:

Linia 38: #define HARDWARE_TYPE MD_MAX72XX:: FC16_HW <- depinde de modulul 8x8 și de orientarea acestuia

în loc de FC16_HW ar putea una dintre:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Codul folosește setările pentru ora centrală din SUA și trebuie ajustat pentru alte fusuri orare:

Linia 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Ora de vară UTC-5TimeChangeRule mySTD = {"CST", First, Sun, 2 Nov, -360}; // Ora standard UTC -6

Acest lucru este ușor de reglat. Numele CST / CDT este doar pentru a avea o referință. Nu afișez abrevierea din trei litere, deci nu contează. Următorii parametri se referă la ce zi din lună are loc comutarea. Reglarea este în câteva minute, astfel încât locațiile care utilizează ajustări de +/- 30 de minute vor funcționa și ele.

RTC funcționează intern la ora UTC, permițând bibliotecii de fus orar să funcționeze conform intenției. S-ar putea să vă întrebați de ce codul face trimitere la vechiul chip DS1307 contrar chipului de ceas pe care l-am folosit, dar acest lucru nu contează. Biblioteca funcționează bine cu oricare dintre cipuri. DS1307 are tendința de a deriva mai mult decât DS3132. DS3132 este ceasul preferat. Pentru cei care ar dori să adauge timp de internet, un ESP8266 va face treaba destul de ușor. Acest lucru ar putea face RTC învechit. Dacă faceți aceste modificări, utilizați Arduino EEPROM pentru a stoca timpul țintă, am folosit RTC EEPROM pentru a face acest lucru.

Pasul 4: Funcționare și setări

Funcționare și setări
Funcționare și setări
Funcționare și setări
Funcționare și setări
Funcționare și setări
Funcționare și setări

Există trei butoane

1. Meniu / setări

2. Sus

3. Jos

Butonul de meniu permite parcurgerea celor trei tipuri de afișaj: Ora curentă, Ora țintă, Ora Delta. Ora Delta arată numărul de zile, HH / MM / SS între ora curentă și ora țintă. Se va afișa t- și numărătoarea inversă dacă ținta este în viitor sau t + și numărătoarea în sus dacă ținta este în trecut.

Pentru a regla ora curentă sau ora țintă, selectați ora curentă sau afișarea timpului țintă. Pentru a schimba ora, țineți apăsat butonul de meniu timp de 2 secunde și eliberați, ceea ce vă va aduce în modul de setare. „/” Sau „:” vecin se vor transforma în „” pentru a indica ce cifră ajustați. Utilizați butoanele sus / jos pentru a regla individual hh / mm / ss și mm / dd / aa. Nu am adăugat o setare pentru a comuta între zz / ll / aa și zz / ll / aa, acest lucru trebuie schimbat în cod sau poate cineva este dispus să adauge această caracteristică.

Veți observa că, dacă treceți minutele peste 59 sau sub 00, afișajul orelor se va regla și. același lucru este valabil pentru secunde, ore și zile schimbând următoarea valoare mai mare dacă treceți sub 0 sau peste valoarea maximă pentru această cifră. Am făcut acest lucru pentru a evita programarea diferitelor limite ale lunilor individuale și dacă februarie are nevoie de 29 de zile într-un an bisect. Reglarea timpului se face de fapt în epocă, secunde de la 1 ianuarie-1970.

Am adăugat un videoclip simplu pentru a arăta numărarea. Am vrut să le fac ca un afișaj rotativ. Dacă doriți să reglați durata modificării, linia 69 din INO vă oferă câteva opțiuni pentru a accelera sau a încetini schimbarea. 120 ms ar face ca cifrele să deruleze suficient de lent, deoarece ar fi o roată care rulează continuu.

Sper că ți-a plăcut acest lucru instructabil.

Patrick Geschwindner

Recomandat: