Ciao a tutti,
ho realizzato questa funzione che se l'ingresso EN mi va alto e ci rimane per più di "time" millisecondi allora mi restituisce true, altrimenti false.
L'ho dichiarata fuori dal loop e fuori dal setup.
[code]boolean TON(boolean EN, unsigned long time)
{
boolean ST;
Qua crei una variabile di tipo boolean ST, non dichiari quale sia il valore.
if(EN && !ST) {start_time=millis(); ST=true;}
Infatti in questo "if" fai un controllo che comprende anche ST... ma il suo valore a questo punto è completamente casuale..
Se e solo se EN = true e St = false entra nell' if.
Perche ci sono degli errori di principio in questa funzione.
Es. La variabile ST la continui a ricreare, e non può funzionarti come controllo...
Ti consiglio di dichiararla come variabile globale, e dargli subito il valore false: boolean ST = false;
Perche adesso come adesso non serve a niente.