Seconda opzione per azzerare il timer.
La seconda opzione per azzerare il timer si presenta così:
#define MY_PERIOD 500 // periodo in ms
uint32_t timre1; // variabile
void setup()
{
}
void loop()
{
if (millis() - timr1 >= MY_PERIOD) // cerca la differenza
{
timre1 += MY_PERIOD; // reset timer
// esegue l'azione
}
}
- Questa costruzione elabora duramente il periodo, cioè non "parte" con il tempo se c'è un delay() nel codice, perché il tempo dell'operazione successiva è sempre un multiplo del periodo.
- Lo svantaggio qui è che se il timer mancherà il periodo, "scatterà" più volte di seguito al prossimo controllo.
