Sommario:
- Forniture
- Passaggio 1: cablaggio
- Passaggio 2: il codice
- Passaggio 3: schematico (questo non è proprio un passaggio)
Video: Orologio di precisione: 3 passi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
Abbiamo tutti bisogno di orologi, quindi perché non crearne uno tuo in questo tutorial ti mostrerò come creare un orologio di precisione una volta impostato che terrà automaticamente traccia dell'ora corrente sullo sfondo di tutto. Pur necessitando solo di pochissime forniture e zero saldature.
Forniture
Innanzitutto, avrai bisogno di un Arduino, ma qualsiasi Arduino funzionerà
Successivamente, avrai bisogno di un assortimento di cavi per ponticelli generici.
2 interruttori a pulsante Sparkfun da 12 mm
Un tagliere tradizionale
e un display LCD 1602 a 16 pin
Passaggio 1: cablaggio
Affinché questo orologio funzioni, devi collegarlo in un modo molto specifico, altrimenti otterrai una serie di numeri casuali sullo schermo anziché l'ora.
Passaggio 2: il codice
Dato che non stiamo usando un RTC, il codice sarà un po' lungo, ma per fortuna ho fatto tutto il duro lavoro per te e l'ho fornito qui.
Basta copiare e incollare questo nell'IDE di Arduino o nell'editor web.
#include "LiquidCrystal.h"
// Questo definisce il cablaggio LCD ai DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LCD a cristalli liquidi (rs, en, d4, d5, d6, d7);
// Impostazione contrasto LCD digitale int cs=9;// pin 9 per contrasto PWM const int contrasto = 100;// contrasto predefinito
// la visualizzazione dell'ora iniziale è 12:59:45 PM int h=12; intm=59; int s=45; int flag=1; //pomeriggio
// Pulsanti per l'impostazione dell'ora int button1; int pulsante2;
// Definizione dei pin per i pulsanti di impostazione dell'ora int hs=0;// pin 0 per l'impostazione delle ore int ms=1;// pin 1 per l'impostazione dei minuti
// Timeout retroilluminazione const int Time_light=150; int bl_TO=Time_light;// Timeout retroilluminazione int bl=10; // Pin retroilluminazione const int backlight=120; // non più di 7mA !!!
// Per una lettura accurata dell'ora, usa Arduino Real Time Clock e non solo delay() static uint32_t last_time, now = 0; // RTC
void setup() { lcd.begin(16, 2); pinMode(hs, INPUT_PULLUP);// evita le resistenze Pullup esterne per il pulsante 1 pinMode(ms, INPUT_PULLUP);// e il pulsante 2 analogWrite(cs, contrast);// Regola il contrasto VO analogWrite(bl, backlight); // Ruota su Retroilluminazione ora=millis(); // legge il valore iniziale dell'RTC }
void loop() { lcd.begin(16, 2);// ogni secondo // Aggiorna display LCD // Stampa TEMPO in ore, minuti, secondi + AM/PM lcd.setCursor(0, 0); lcd.print("Ora"); if(h<10)lcd.print("0");// sempre 2 cifre lcd.print(h); lcd.print(:"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(:"); if(s<10)lcd.print("0"); lcd.print(s);
if(flag==0) lcd.print("AM"); if(flag==1) lcd.print("PM"); lcd.setCursor(0, 1);// per la riga 2 lcd.print("Orologio di precisione");
// migliore sostituzione del ritardo (1000) // precisione molto migliore, non più dipendente dal tempo di esecuzione del ciclo
for (int i=0;i<5;i++)// crea un ciclo di 5 volte da 200 ms, per una risposta del pulsante più rapida {
while ((now-last_time)<200) //delay200ms { now=millis(); } // ciclo interno di 200 ms last_time=now; // prepara per il prossimo ciclo
// leggi i pulsanti di impostazione button1=digitalRead(hs); // Leggi i pulsanti button2=digitalRead(ms);
//Time out retroilluminazione bl_TO--; if(bl_TO==0) { analogWrite(bl, 0); // Retroilluminazione OFF bl_TO++; } // Premi uno qualsiasi per attivare la retroilluminazione if(((button1==0)|(button2==0)) & (bl_TO==1)) { bl_TO=Time_light; analogWrite(bl, retroilluminazione); // attende il rilascio del pulsante while ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Leggi pulsanti button2=digitalRead(ms); } } else // Elabora il pulsante 1 o il pulsante 2 quando viene premuto mentre la retroilluminazione è attiva { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite(bl, retroilluminazione); }
if(pulsante2==0){ s=0; m=m+1; bl_TO=Time_light; analogWrite(bl, retroilluminazione); }
/* ---- gestisci secondi, minuti, ore am/pm overflow ----*/ if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; bandiera=bandiera+1; if(flag==2)flag=0; }
if((button1==0)|(button2==0))// Aggiorna il display se viene premuto il pulsante di impostazione dell'ora { // Aggiorna il display LCD // Stampa l'ORA in ore, minuti, secondi + AM/PM lcd.setCursor(0, 0); lcd.print("Ora"); if(h<10)lcd.print("0");// sempre 2 cifre lcd.print(h); lcd.print(:"); if(m<10)lcd.print("0"); lcd.print(m); lcd.print(:"); if(s<10)lcd.print("0"); lcd.print(s);
if(flag==0) lcd.print("AM"); if(flag==1) lcd.print("PM"); lcd.setCursor(0, 1);// per la riga 2 lcd.print("Orologio di precisione"); }
} // termina se altrimenti } // termina per
// loop esterno da 1000 ms
s=s+1; //incremento sec. conteggio // ---- gestisci secondi, minuti, ore am/pm overflow ---- if(s==60){ s=0; m=m+1; } if(m==60) { m=0; h=h+1; } if(h==13) { h=1; bandiera=bandiera+1; if(flag==2)flag=0; }
// Fine del ciclo }
Passaggio 3: schematico (questo non è proprio un passaggio)
Se qualcuno che legge questo è un nerd tecnologico, ecco anche uno schema, puoi guardarlo impazzire.
Divertiti e divertiti e soprattutto rimani fresco.
Consigliato:
Pingo: un lanciatore di palline da ping pong con rilevamento del movimento e alta precisione: 8 passaggi
Pingo: un lanciatore di palline da ping pong con rilevamento del movimento e alta precisione: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
Arduino Nano - Tutorial sensore altimetro di precisione MPL3115A2: 4 passaggi
Arduino Nano - Tutorial sensore altimetro di precisione MPL3115A2: MPL3115A2 utilizza un sensore di pressione MEMS con un'interfaccia I2C per fornire dati accurati di pressione/altitudine e temperatura. Le uscite del sensore sono digitalizzate da un ADC a 24 bit ad alta risoluzione. L'elaborazione interna rimuove le attività di compensazione dal
Raspberry Pi - Tutorial Python per sensore altimetro di precisione MPL3115A2: 4 passaggi
Raspberry Pi - Tutorial Python per sensore altimetro di precisione MPL3115A2: MPL3115A2 utilizza un sensore di pressione MEMS con un'interfaccia I2C per fornire dati accurati di pressione/altitudine e temperatura. Le uscite del sensore sono digitalizzate da un ADC a 24 bit ad alta risoluzione. L'elaborazione interna rimuove le attività di compensazione dal
DropArt - Collider fotografico di precisione a due gocce: 11 passaggi (con immagini)
DropArt - Collider fotografico di precisione a due gocce: ciao a tutti, in questo tutorial presento il mio progetto per un collisore a due gocce di liquido controllato da computer. Prima di iniziare con i dettagli del design, penso che abbia senso spiegare esattamente qual è lo scopo del design. Un divertente, interessante
C51 Orologio elettronico a 4 bit - Orologio in legno: 15 passi (con immagini)
C51 Orologio elettronico a 4 bit - Orologio in legno: ho avuto un po' di tempo libero questo fine settimana, quindi sono andato avanti e ho assemblato questo orologio digitale elettronico fai-da-te a 4 bit da AU $ 2,40 che ho acquistato da AliExpress qualche tempo fa