Buonasera tutti, sicuramente questa domanda è stata già fatta ma non riesco a trovare nessuna guida dettagliata per questo creo un nuovo argomento. Voglio visualizzare la data e l’ora del modulo RTC DS3231 (con relativa libreria) sul display, come posso fare?
Domanda troppo generica, mancano info.
Quale display ad esempio ? Quale libreria usi per il display ?
Di librerie per i vari RTC ce ne sono una valanga, quale di preciso ?
Di base devi prendere i pezzi, quindi giorno, mese, anno, etc. e stamparli uno alla volta e mettendoci in mezzo il separatore che vuoi, esempio '/' per la data
Oppure usare snprintf, avendo già i pezzi della data, puoi creare una stringa/buffer che poi stamperai su display, usando l'opportuno comando della libr che usi
char buf[20]; // ottieni qualcosa tipo 09/06/2021 18:01 16 caratteri+1 fine stringa
snprintf(buf,20,"%02d/%02/%04d %02d:%02d",giorno,mese,anno,ora,minuti);
Il %02d indica di mettere in quella posizione la variabile, usando 2 caratteri e se sono meno di 2 riempie con 0
Vedi la sintassi del comando printf() del C classico
Non ho nessuna preferenza per la libreria, il display è un display lcd 16x2.
Per quel LCD puoi usare la LiquidCrystal, perciò basta un
char buf[20]; // ottieni qualcosa tipo 09/06/2021 18:01 16 caratteri+1 fine stringa
snprintf(buf,20,"%02d/%02/%04d %02d:%02d",giorno,mese,anno,ora,minuti);
lcd.setCursor(0, 1); // col,row
lcd.print(buf);
Puoi comunque anche stampare i pezzi della data calcolando di quanto spostarti
if(giorno>9)
{ lcd.setCursor(0, 1); lcd.print(giorno); }
else
{ lcd.setCursor(0, 1); lcd.print("0");
lcd.setCursor(1, 1); lcd.print(giorno); }
}
lcd.setCursor(2, 1); lcd.print("/");
lcd.setCursor(3, 1); lcd.print(mese);
...
E quale libreria per il RTC ?
Va bene grazie, per il modulo RTC ho usato la RTClib.
E' più semplice così:
lcd.setCursor(0, 1);
if(giorno<10) {lcd.print('0');}
lcd.print(giorno);
lcd.print('/');
if(mese<10) {lcd.print('0');}
lcd.print(mese);
lcd.print('/');
...
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.