Istruzione che mi riporta in un punto preciso del loop

Salve a tutti, ho bisogno di un aiuto da parte di voi esperti di arduino.
Esiste un'istruzione che, se richiamata in un punto all'interno del void loop, ferma l'esecuzione del programma e la fa subito ripartire da un punto preciso stabilito da me in precedenza? come una sorte di segnalibro, che una volta richiamata (l'istruzione) mi esegue il codice dal punto in cui ho messo in precedenza il segnalibro

Cerca la funzione "goto". Ma sappi che é quasi sempre evitabile, basta strutturare bene il programma. Potresti esporci il progetto, così vediamo di trovare la soluzione

Silente:
Cerca la funzione "goto". Ma sappi che é quasi sempre evitabile, basta strutturare bene il programma. Potresti esporci il progetto, così vediamo di trovare la soluzione

Ho bisogno che il mio programma, alla pressione di un tasto, mi esegua una sequenza di 3 azioni(non insieme ma uno alla volta) e, nel caso in cui arrivi un input digitale dall'esterno (come ad esempio la pressione di un altro pulsante), arduino, senza terminare lo sketch, riparta dalla prima azione e di li continua con la seconda e poi la terza

Basta una flag (byte) e tre if, per buttarla giu "alla grossa", senza goto ...

ad esempio, condizioni l'esecuzione delle tre azioni al valore della flag (0, nessuna azione, 1 azione 1, 2 azione 2, 3 azione 3) ... nel setup la metti a zero, ovviamente ... scrivi 3 if consecutive, dove metti le 3 azioni da eseguire ... la prima if esegue se la flag vale 1, e come ultimo comando mette la flag a 2 ... la seconda se la flag vale 2, e come ultimo comando mette la flag a 3 ... la terza se la flag vale 3, e come ultimo comando mette la flag a 0 ... sia nello sketch che nelle if, leggi gli ingressi e metti la flag ad 1 sia quando leggi il pulsante, che quando arriva l'input digitale ... ogni volta che premi il pulsante OPPURE arriva l'input digitale, la sequenza di azioni parte dalla prima ...

Se invece la ripetizione deve avvenire solo se l'input digitale arriva quando le azioni sono gia in corso (ma non devono iniziare con l'input digitale ma solo con il pulsante), servono due flag, una per lo stato ed una per il controllo ... quella di controllo la metti ad 1 solo con il pulsante, e la rimetti a 0 alla fine di tutte e tre le azioni, e quella di stato la rimetti ad 1 con l'input digitale solo se quella di controllo e' ad 1 ...

Usare il goto vuol dire programmare male, tutti i problemi è dimostrato che si possono risolvere senza usare il goto :slight_smile:

Come ti hanno detto, una macchina a stati finiti dove una variabile assume tre valori diversi, e a seconda del valore esegue una funzione specifica.

All'interno della funzione un ciclo che legge di continuo un input, se attivo cambio stato e esco dalla funzione con return.

Grazie a tutti ragazzi, ho risolto con un semplicissimo if!