Quello che vuoifare è già stato implementato nella swRTC
![]()
Bastava aprire il codice e vedere che c'era la gestione che vuoi.
A parte questo, si può fare anche con secTimer.
Cmq, brevemente, un orologio non ha bisogno di usare unsigned long! Ogni var sono 4 byte di RAM che se ne vanno, mi dici a che ti serve poter memorizzare u nnumero che va da 0 a 4294967295 quando le ore vanno da 0 a 23 ed i minuti ed i secondi da 0 a 59?
byte ore = 0;
byte minuti = 0;
byte secondi = 0;
byte vecchi_secondi;
byte giorni = 1;
byte mesi = 1;
int anni = 0;
void setup() {
....
vecchi_secondi = myTimer.readTimer();
}
void loop() {
if (vecchi_secondi!=myTimer.readTimer()) {
vecchi_secondi=myTimer.readTimer();
secondi++;
if (secondi>59) {
secondi=0;
minuti++;
if (minuti>59) {
minuti=0;
ore++;
if (ore>23) {
ore=0;
giorni++;
if (giorni>31) {
giorni=1;
mesi++;
if (mesi>12) {
mesi=1;
anni++;
}
}
}
ecc... chiudi tutto gli if
Ovvio che il codice qui sopra non gestisce i mesi con giorni differenti però è per capire la logica.
Ma ripeto, per un orologio c'è la swRTC che fa tutto.