Scrivo un ultimo post a questo topic per condividere con voi, sperando possa essere d'aiuto, ciò che ho appena appreso (non me ne vogliano i più esperti, so che si tratto di quisquilie ma per me è stata un'occasione per apprendere qualcosa di nuovo).
Ho definitivamente risolto il problema dello sketch qui sopra condiviso:
primo errore è stato la definizione della variabile "a" come variabile locale (come spiegato poco sopra)
il secondo, che ho appena sgrovigliato, riguarda il funzionamento di millis
Utilizzando l'unico metodo di debug fin'ora da me conosciuto ho iniziato ad intercalare nel codice dei "Serial.print" per capire come mai il ciclo while del setup risultasse essere senza conclusione, quando in realtà mi aspettavo che col passare dei secondi, l'operazione "x-a>9999" avrebbe finalmente restituito FALSE. In realtà, pur dichiarando poco sopra la variabile "x" uguale a millis ed "a" =0, la stessa "x" non veniva aggiornata continuamente con il valore di millis (come io mi aspettavo). Essendo all'interno della funzione setup e non loop, lo svolgimento delle istruzioni entro contenute avviene "una sola volta", ne consegue che "x" registrava il primo valore di millis che incontrava quando la riga di codice veniva eseguita e poi non veniva più aggiornata. Per ovviare al problema ho inserito l'istruzione "x=millis()" all'interno del ciclo while, così che ogni volta che il ciclo terminava questa si aggiornava nuovamente.
Prego i più esperti di correggermi se c'è qualcosa di errato, o comunque se vi va datemi conferma delle mie teorie pliz ![]()