Sommario:

Orologio per il pensionamento / Orologio con conteggio su/giù: 4 passaggi (con immagini)
Orologio per il pensionamento / Orologio con conteggio su/giù: 4 passaggi (con immagini)

Video: Orologio per il pensionamento / Orologio con conteggio su/giù: 4 passaggi (con immagini)

Video: Orologio per il pensionamento / Orologio con conteggio su/giù: 4 passaggi (con immagini)
Video: Questa purtroppo è Milano....😔 #ruzzaorologi #orologio #rapina 2024, Luglio
Anonim
Orologio pensionamento/Conta su/giù orologio
Orologio pensionamento/Conta su/giù orologio

Avevo alcuni di questi display a matrice di punti LED 8x8 nel cassetto e stavo pensando a cosa farne. Ispirato da altre istruzioni, ho avuto l'idea di costruire un display per il conto alla rovescia per il conto alla rovescia per una data/ora futura e se il tempo target è passato, conta da esso. L'ho reso ora il mio orologio per la pensione seduto sullo scaffale.

L'idea di metterlo in una bottiglia è stata più che altro un incidente mentre si pensava a un involucro. Altri mettono le navi in una bottiglia, perché non un orologio?

Volevo anche che l'orologio obbedisse all'ora legale e, naturalmente, ricordasse le impostazioni e l'ora quando veniva scollegato. Sto alimentando l'orologio tramite USB che lo rende riprogrammabile se desideri fare qualcosa di diverso o semplicemente aggiungere funzionalità al codice. Il codice è piuttosto semplice e potrebbe anche richiedere molte ottimizzazioni. Non mi sono preso molta cura del consumo di RAM, devo ammetterlo. Se ho tempo e motivazione, ci tornerò.

Forniture

1. Arduino Nano

2. RTC (ho usato il comune DS3231 che ha anche una EEPROM)

3. Modulo a matrice di punti 12x 8x8. (Ho avuto i moduli quad che sono più facili da allineare)

4. LDR per regolare la luminosità del display

5. Resistenza 10 kOhm

6. Condensatore 5x 100 uF che sopprime i picchi dal display

7. Per aumentare il contrasto dei moduli 8x8, ho utilizzato il "Window Film" colorato scuro. Il Display mostra i LED come punti bianchi se non accesi. Il film della finestra lo trasforma in un aspetto nero lucido.

Passaggio 1: collegare i componenti

Collegare i componenti
Collegare i componenti
Collegare i componenti
Collegare i componenti

Ho usato tre dei quattro display per assemblare il display. Per mostrare una data con barre e l'ora con i due punti, abbiamo bisogno di 8 caratteri. Usando il tipico font 5x7, avremmo bisogno di sei blocchi 8x8 per riga. Ho tagliato a metà uno dei blocchi quadrupli e li ho disposti in due file per sei blocchi come mostrato nello schema della breadboard.

Passaggio 2: parti stampate in 3D

Parti stampate in 3D
Parti stampate in 3D
Parti stampate in 3D
Parti stampate in 3D
Parti stampate in 3D
Parti stampate in 3D

Per contenere le due file del display e posizionarle nella bottiglia ho stampato degli anelli distanziatori rotondi per la cornice del display. Ho aggiunto i file che ho usato di seguito. Per poterli stampare senza supporto, sono divisi in parti. Lo screenshot mostra i due anelli incollati alla cornice del display. Il coperchio del collo della bottiglia ospita i tre pulsanti per passare da una modalità di visualizzazione all'altra e impostare l'ora corrente e l'ora target. La cover del collo di bottiglia l'ho stampata in TPU permettendo di far scorrere il cavo USB nella cover senza tagliare i connettori e legarla con pochi avvolgimenti di filo. Ho dimenticato di dire che ho usato una bottiglia di vino da 1,5 L che ho tagliato proprio sul fondo. Tutte le parti da stampare si adattano a un piano di stampa 20x20 cm (8x8 pollici).

Passaggio 3: il codice

Il codice Arduino utilizza alcune librerie di uso comune.

MD_MAX72xx

SPI

Filo

RTClib

Fuso orario

TimeLib

Ci sono alcune righe nel file INO che potrebbero dover essere modificate:

Riga 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- dipende dal modulo 8x8 e dal suo orientamento

invece di FC16_HW potrebbe essere uno di:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Il codice utilizza le impostazioni per l'ora centrale degli Stati Uniti e deve essere modificato per altri fusi orari:

Riga 53/54:

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

Questo è facile da regolare. Il nome CST/CDT è solo per avere un riferimento. Non visualizzo l'abbreviazione di tre lettere, quindi non importa. I parametri successivi si riferiscono a quale giorno del mese avviene il cambio. La regolazione è in minuti, quindi funzioneranno anche le posizioni che utilizzano regolazioni di +/- 30 minuti.

L'RTC è in esecuzione internamente su UTC-Time consentendo alla libreria dei fusi orari di funzionare come previsto. Potresti chiederti perché il codice fa riferimento al vecchio chip DS1307 contrariamente al chip di clock che ho usato, ma questo non importa. La libreria funziona bene con entrambi i chip. Il DS1307 ha la tendenza ad allontanarsi più del DS3132. il DS3132 è l'orologio preferito. Per coloro che desiderano aggiungere tempo a Internet, un ESP8266 farà il lavoro abbastanza facilmente. Ciò potrebbe rendere obsoleto l'RTC. Se stai apportando queste modifiche, usa l'EEPROM di Arduino per memorizzare il tempo target, io ho usato l'EEPROM RTC per farlo.

Passaggio 4: funzionamento e impostazioni

Funzionamento e impostazioni
Funzionamento e impostazioni
Funzionamento e impostazioni
Funzionamento e impostazioni
Funzionamento e impostazioni
Funzionamento e impostazioni

Ci sono tre pulsanti

1. Menu / impostazioni

2. Su

3. Giù

Il pulsante menu consente di scorrere i tre tipi di visualizzazione: ora corrente, ora target, ora delta. L'ora delta mostra il numero di giorni, HH/MM/SS tra l'ora corrente e l'ora di destinazione. Mostrerà t- e il conto alla rovescia se l'obiettivo è nel futuro o t+ e il conto alla rovescia se l'obiettivo è nel passato.

Per regolare l'ora corrente o target, selezionare l'ora corrente o la visualizzazione dell'ora target. Per modificare l'ora, tieni premuto il pulsante menu per 2 secondi e rilascialo per entrare nella modalità di impostazione. Il vicino "/" o ":" si trasformerà in "" per indicare quale cifra stai regolando. Utilizzare i pulsanti su/giù per regolare le singole hh/mm/ss e mm/gg/aa. Non ho aggiunto un'impostazione per passare da mm/gg/aa a gg/mm/aa, questo deve essere modificato nel codice o forse qualcuno è disposto ad aggiungere questa funzione.

Noterai che se passi i minuti sopra 59 o sotto 00, anche il display dell'ora si regolerà. lo stesso vale per secondi, ore e giorni cambiando il valore immediatamente superiore se si incrocia al di sotto dello 0 o al di sopra del massimo per questa cifra. L'ho fatto per evitare di programmare i vari limiti dei singoli mesi e se febbraio ha bisogno di 29 giorni in un anno bisestile. La regolazione dell'ora viene effettivamente eseguita in epoch-time, secondi dal 1 gennaio al 1970.

Ho aggiunto un semplice video per mostrare il conteggio. Volevo farli come un display a ruota girevole. Se desideri regolare la durata del cambio, la riga 69 nell'INO ti offre alcune opzioni per accelerare o rallentare il cambio. 120 ms farebbero scorrere le cifre abbastanza lentamente in quanto sarebbe una ruota in continuo movimento.

Spero che ti sia piaciuto questo istruibile.

Patrick Geschwindner

Consigliato: