Class timer.
Puoi racchiudere il costrutto timer in una classe per un uso più conveniente:
class Timer
{
public:
Timer(uint32_t period = 0)
{
setPeriod(period);
}
void setPeriod(uint32_t period)
{
_period
= period;
}
bool ready()
{
return (_period
&& millis() - _timer
>= _period) ? (_timer
= millis(), 1) : 0;
}
private:
uint32_t _timer = 0, _period = 0;
};
Aggiungiamo una classe all'inizio dello sketch o un file separato e possiamo creare timer, durante l'inizializzazione specifichiamo il periodo in millisecondi. Il periodo può essere modificato in fase di esecuzione con setPeriod() e impostandolo su 0 si arresta il timer. Nel ciclo principale, eseguiamo il polling della funzione ready(), quando il timer si attiva, restituirà true.
Esempio di utilizzo:
Timer timer1(1000);
Timer timer2;
void setup()
{
Serial.begin(9600);
timer2.setPeriod(2000);
}
void loop()
{
if (timer1.ready())
Serial.println("timer 1");
if (timer2.ready())
Serial.println("timer 2");
}
Qui vengono creati due timer, il primo per 1 secondo, il secondo per 2 secondi (il periodo e impostato tramite setPeriod()).