Ci sono tre tipi di temporizzatore retriggerabile:
Timer ritardato sia all'attacco che al rilascio (uso debounce)
if(tIn == tOut) t = millis(); else if(millis() - t >= RITARDO) tOut = tIn;
Timer T-ON, ritardato all' attacco (uso sequenze/automazioni)
if(!tIn) { t = millis(); tOut = 0; } else if(millis() - t >= RITARDO) tOut=1;
Timer T-OFF, ritardato al rilascio (uso "luci scale")
if(tIn) { t = millis(); tOut = 1; } else if(millis() - t >= RITARDO) tOut=0;
'tIn' è la variabile di comando del timer (1=comando attivo)
'tOut' è l'uscita del timer (1=attiva)
Il programma si riduce a:
- leggere il pulsante assegnando a 'tIn' il valore 1 quando il pulsante è premuto
- eseguire la riga del timer
- scrivere sull'uscita il valore che attiva il relè se l'uscita del timer è 1, o il valore che lo disattiva se l'uscita del timer è 0
Etemenaki:
Comunque, se e' il primo caso, forse puo funzionare cosi (da provare, e nel caso adattare)
Metti a posto le digitalRead ![]()