millis() è come un cronometro che parte da 0 all'accensione e va avanti fino alla fine dell'unsigned long int (uint32_t) che esprime in millisecondi il tempo trascorso. Raggiunto il limite dei 32 bit (oltre 4 miliardi, pari a circa 50 giorni) ricomincia da zero. Per usarlo, quindi, devi solo prendere il tempo all'inizio di qualcosa e poi verifichi ciclicamente se è trascorso il tempo prefissato con la forma:
if(millis()-t_iniziale > DURATA) {};
Supponi di infornare una torta, accendere il fuoco al caffè e mettere a lievitare l'impasto per il pane: ogni volta che compi una di queste tre azioni ti segni il tempo: t_in_torta, t_in_caffe, t_in_lievi, poi nel loop scrivi (60000 sono i millisecondi in un minuto):
if(millis()-t_in_torta > 45*60000) {togli_torta};
if(millis()-t_in_caffe > 5*60000) {togli_caffe};
if(millis()-t_in_lievi > 12*60*60000) {fine_lievi}; // Facciamo 12 ore di lievitazione :)
Fai attenzione a usare sempre la forma if (millis()-t_iniziale > DURATA) {} per scongiurare problemi qualora il circuito resti acceso più di 50 giorni e millis() si azzeri proprio durante una temporizzazione. Se usi quella forma, le temporizzazioni funzioneranno comunque.