per il discorso della variabile = / == , ho sbagliato a scrivere qui sul forum.
Oltre quanto detto da @ORSO, ci sono altri errori evidenti, purtroppo non ho analizzato il codice nel dettaglio e non posso sapere se determinano il comportamento non desiderato che hai descritto.
Riguardo agli errori evidenti, (nota che se il codice fosse stato scritto da un programmatore esperto gli stessi errori potrebbero non essere giudicati tali).
Il titolo del post è quasi corretto, per esserlo andrebbe modificato in: Ciclo di vita di una variabile.
In verità si tratta di ambito di visibilità (o scope nella terminologia accademica).
Nella funzione setup hai scritto:
int e = 0;// pongo e = 0
Con questo codice hai creato una variabile locale, il cui ambito di visibilità (scope) è limitato al blocco di codice collegato alla funzione setup. Un blocco di codice si crea delimitando una porzione di codice con i caratteri { questo è un blocco di codice }. Un blocco di codice può esistere all'interno di una funzione sia esso collegato o meno a qualcosa (collegato ad un comando, ad un identificatore, ecc).
Questa variabile e non la usi, se la usassi dentro la funzione setup e ti volessi riferire alla variabile globale con stesso nome, saresti impossibilitato a farlo a causa dello oscuramente che le variabili locali arrecano verso quelle globali con identico nome.
PS: non credo sia questa la soluzione al problema.
L'altro errore e più uno spreco di risorse (RAM) che essendo di circa 2048 byte rappresentano una risorsa limitata e quindi preziosa. Come vedi @ORSO ha impiegato una variabile di tipo byte, da ciò io deduco che la variabile sequenza non assumerà mai valori superiori a 255 (con 8 bit questo è il massimo valore decimale rappresentabile)
byte sequenza = 0;
Mentre tu hai usato il tipo int per le variabili globali a, b, c, d, e, da ciò io dovrei dedurre che queste variabili durante l'esecuzione potranno assumere valori superiori a 255. Nel caso specifico è un errore che tutti gli utenti alle prime armi commettono e quindi non faccio deduzione errate perché è chiaro l'uso che si vuole fare di quelle variabili, ma per altre variabili il cui uso non è così evidente, porta a fare deduzione e analisi errate, sia quando il codice l'ho scritto io che quando lo mostro ad altri.
Permettimi di darti un consiglio (si capisce che non hai studiato il linguaggio C/C++ e che sei alle prime armi o anche letto la tua presentazione); Arduino è fantastico, comodo, facile da apprendere, semplificato ecc, tuttavia non è lo strumento ideale per prendere confidenza con il linguaggio C/C++.
Abbinando ad Arduino, un buon libro sul C++ (o anche C) e una ambiente di sviluppo integrato (IDE) che ti permetta di scrivere codice che poi viene eseguito sul tuo pc (senza quindi dovere scrivere il firmware nella FLASH di arduino) ti permette di prendere confidenza con il linguaggio per quanto riguarda le basi, testarle sul tuo pc e se funzionano trasferirle su arduino con i dovuti adattamenti.
grazie orso ,
scusa se ti stresso e scusa l ignoranza , potresti spiegare le righe del codice che mi hai consigliato?
Temo siano un tantino avanzate per affrontarle adesso, comunque sicuramente @ORSO ti potrà spiegare, ma faticherai
a comprendere tutto al 100%.
Ciao.