Go Down

Topic: istruzione che viene eseguita una sola volta (Read 1 time) previous topic - next topic

peppe123

Salve gente

esiste una funzione che non contenga if, variabili o altre condizioni e che in un ciclo loop o in uno switch case esegue delle istruzioni una sola volta all'avvio?

Grazie
Giuseppe

qsecofr


Salve gente

esiste una funzione che non contenga if, variabili o altre condizioni e che in un ciclo loop o in uno switch case esegue delle istruzioni una sola volta all'avvio?

Grazie
Giuseppe


e perchè dovrebbe esistere? c'è già la funzione setup che è fatta per quello e se no si usa un flag  che segnali il "già fatto".

peppe123



Salve gente

esiste una funzione che non contenga if, variabili o altre condizioni e che in un ciclo loop o in uno switch case esegue delle istruzioni una sola volta all'avvio?

Grazie
Giuseppe


e perchè dovrebbe esistere? c'è già la funzione setup che è fatta per quello e se no si usa un flag  che segnali il "già fatto".


per farti un esempio, entro in un case voglio che il buzzer mi suoni due volte e basta.
il setup esegue si una sola volta le istruzioni ma all'avvio di arduino, invece io voglio eseguire quella istruzione una sola volta quando accedo ad uno specifico case.

grazie

PaoloP

Si.
Puoi dichiarare una variabile globale, ad esempio:
Code: [Select]

bool onetime = true;


poi nel case metti:
Code: [Select]

case X:
if (onetime) {
// codice che vuoi eseguire
onetime = false;
}
break;


in questo modo onetime è vera all'avvio di Arduino.
Appena viene richiamato il caso X viene eseguito l'if e quindi le tue istruzioni. infine viene posto onetime = false.
Al successivo richiamo del caso X, onetime è falso e quindi l'if non viene eseguito.
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

pitusso

#4
Dec 13, 2012, 03:03 pm Last Edit: Dec 13, 2012, 03:58 pm by pitusso Reason: 1
Ciao, accodo un altro metodo a quelli proposti da PaoloP
Nel tuo case, dopo l'operazione specifica, puoi aggiungere questa istruzione:

Code: [Select]
while(true);

che di fatto è un loop infinito.

Go Up