utilizzare il digitalRead

salve ragazzi,
avrei la necessità di leggere un segnale quando si verifica la seguente condizione

if (now.unixtime() == timer + 5;){

ciclando più volte al secondo, ovviamente, il codice all’interno dell’if viene ripetuto più volte…
come posso fare in modo tale che venga eseguito solo una volta?

thanks

Ci sono vari modi per farlo il piu semplice: crei una variabile bool di default a false quando esegui l'if la metti a true. Ovvero: variabilebool Boolean false; if (now.unixtime() == timer + 5 & variabilebool == false;){ fai quello che devi fare alla varibilebool true. variabilebool = true:

A questo punto quando ricominci il loop la variabilebool è a true di conseguenza la condizione dell'if non è rispettata,E non eseguirai più quel codice. :grin:

e quelli più "sofisticati"? :)

zioTonino:
e quelli più “sofisticati”? :slight_smile:

Dipende da quello che fai per lo più qeullo della varibile bool è il più usato, al massimo puoi usare un int per decidere quante volte puoi eseguirlo o controllare che quello che dovevi fare è già stato fatto e di conseguenza non farlo.
Se hai esigenze specifiche chiedi pure altrimenti non so su cosa orientarti.

concordo con madwriter su tutta la linea...credo poi che quando si programma la soluzione più semplice è di solito la migliore

aggiungerei che per andare sul sicuro farei >= 5 invece che == 5 (ed se necessario gestire i secondi in più rispetto a quelli attesi), giusto nel caso il loop fosse bello tosto