Ho realizzato un semplice orologio tramite RTC e visualizzazione su display LCD.
Il tutto funziona a dovere ma un dettaglio mi sfugge:
quando le ore o minuti o secondi sono ad una cifra sola non viene visualizzato lo zero davanti alla cifra significativa.
Esiste un parametro da aggiungere per poterlo fare?
In generale esiste un qualche parametro standard da inserire per visualizzare il numero di cifre voluto?
Allego parte del listato che sto usando:
void setup() {
pinMode(pinled, OUTPUT);
Serial.begin(9600);
Wire.begin();
lcd.begin(20,4); // inizializza il display su 4 righe e per 20 caratteri quindi accende il display
lcd.backlight();
RTC.begin(); // Inizializza RTC
if (! RTC.isrunning()) { // controlla se RTC è funzionante.
lcd.setCursor(0,0); // inizia dal carattere 1 alla linea 0
lcd.print("RTC non funzionante");
}
DateTime now = RTC.now();
DateTime compiled = DateTime(__DATE__, __TIME__);
if (now.unixtime() < compiled.unixtime()) {
lcd.setCursor(0,0); //inizia dal carattere 1 alla linea 0
lcd.print("RTC non sincronizzato. Aggiornamento!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
lcd.setCursor(0,1); //inizia dal carattere 1 alla linea 1
lcd.print("Setup completato.");
delay(1000);
lcd.clear();
}
void loop() {
DateTime now = RTC.now(); // rileva il tempo corrente
lcd.setCursor(0,0); // inizia dal carattere 1 alla linea 0
lcd.print ("Ora ");
lcd.print(now.hour(), DEC);
lcd.print('.');
lcd.print(now.minute(), DEC);
lcd.print('.');
lcd.print(now.second(), DEC);
lcd.setCursor(0,1); // inizia dal carattere 1 alla linea 1
lcd.print("Data ");
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
Serial.print(now.second(), DEC);