Go Down

Topic: utilizzare il digitalRead (Read 473 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy