Go Down

Topic: utilizzare il digitalRead (Read 462 times) previous topic - next topic

zioTonino

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

Code: [Select]
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

Madwriter

#1
Jul 12, 2012, 01:26 pm Last Edit: Jul 12, 2012, 01:40 pm by Madwriter Reason: 1
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.  :smiley-mr-green:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

zioTonino

e quelli più "sofisticati"?  :)

Madwriter


e quelli più "sofisticati"?  :)

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.
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

ale92

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

lesto

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
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Go Up