Ciao a tutti,
ho realizzato un progetto che prevede Arduino perennemente acceso e connesso in rete.
Ho utilizzato alcune volte la funzione millis() al posto del classico delay ma una domanda sorge spontanea.
Cosa succede quando il valore millis() raggiunge il suo massimo e ricomincia da zero?
I miei cicli vanno tutti a farsi benedire perché ad un determiato momento mi troveró nella condizione di non essere in grado di soddisfarli in quanto il valore di millis corrente+il ritardo voluto saranno sempre maggiori di millis().
Esiste un modo semplice per evitare che ció accada?
La conta dei millis incomincia di nuovo a 0.
Se fai la condizione di controllo del tempo trascorso in modo giusto, come consiglia Guglielmo, Ti funziona tutto.
Se devi avere dei tempi maggiori di 49.5 giorni allora devi usare http://www.faludi.com/2007/12/18/arduino-millis-rollover-handling/
Ciao Uwe
In alternativa è possibile azzerare la millis() periodicamente con queste righe di codice:
// da inserire nell'header del programma prima della Setup()
extern unsigned long timer0_millis;
// riga di codice per azzerare la millis()
timer0_millis = 0;