Ide di arduino fa l'upload di uno sketch non più esistente

ARDUINO UNO
IDE 1.8.7

Salve, come da titolo, faccio alcune modifiche al mio sketch, faccio l'upload, tutto funziona, i led di programmazione lampeggiano --> "Done uploading".

Il problema è che l'upload che lui fa è una versione dello sketch che non contiene le ultime modifiche fatte, quindi che non esiste più! Infatti basta togliere un terminatore di istruzione ";" a lui beatamente non si accorge del problema e carica lo sketch (il precedente, ma quale precedente a questo punto?).

Per risolvere il problema devo riavviare l'IDE, ma dopo 3-4 upload il problema si ripresenta.

Sapete da cosa può dipendere?

Grazie.

Sistema operativo, Arduino UNO originale o una copia?
Succede anche con una seconda scheda o un altra visione IDE?

Ciao Uwe

Siamo alla versione 1.8.10 se anche la versione 1.8.7 avesse un bug, comunque la correzione viene fatta in versione successiva

Arduino nano non originale
Windows 7

E' veramente una noia... alcune volte mi dimentico del problema e impazzisco sul perchè alcune modifiche al codice non mi hanno risolto un problema. Poi provo a togliere un ";" compilo e non mi ritorna errore!! ::slight_smile: ::slight_smile:

Ho provato a chiudere il solo sketch e non tutto il programma e la compilazione riprende normalmente. Mentre facendo "salva" le cose non cambiano alla successiva nuova compilazione.

Grazie.

?

Cosa vuol dire compilare il solo sketch?

Provato con una scheda ESP32, il problema permane. Credo non dipenda dalla scheda connessa.

Standardoil: cos'è che non è chiaro nella descrizione del problema?

Daigs:
Ho provato a chiudere il solo sketch e non tutto il programma e la compilazione riprende normalmente. Mentre facendo "salva" le cose non cambiano alla successiva nuova compilazione.

Questo non è chiaro. Hai un programma in più TABS ?

Comunque io ti consiglio di passare e provare con versione ultima 1.8.10.
Poi, come hai installato IDE ? Da exe di installazione ?
Secondo me sempre meglio la versione zip che ti spacchetti in una cartella di tua scelta, esempio c:\Arduino
E se poi in quella cartella crei una sottocartella "portable" ottieni un IDE con tutte le cartelle li dentro, senza avere i progetti/librerie sotto c:\users..... etc.

Daigs:
Standardoil: cos'è che non è chiaro nella descrizione del problema?

La descrizione appunto
Hai più schede?
Hai dei file sorgente esterni?
Cosa vuol dire che chiudi il solo sketch e non il programma
Sapendo che lo sketch è il programma....

Daigs:
Poi provo a togliere un ";" compilo e non mi ritorna errore!! ::slight_smile: ::slight_smile:

Scusa ma questo è impossibile, ossia non può darti un esito della compilazione senza che abbia compilato.

Intanto direi posta uno screenshot (Alt-Stamp e poi incolla in una immagine jpg che alleghi qui alla tua risposta) della finestra dell'IDE di Arduino con quel progetto caricato.

Poi, nello stesso post, spiega meglio ossia se premi Ctrl-R (o fai click sul primo pulsantino a sinistra) ti scrive "Sto compilando lo sketch"? E poi alla fine, scrive "Compilazione completata"? E nel riquadro nero sotto dovresti avere un output di compilazione: puoi fare qui copia/incolla di tutto quello che c'è nell'output?? Dovresti avere una cosa del tipo:

Lo sketch usa 712 byte (2%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
Le variabili globali usano 9 byte (0%) di memoria dinamica, lasciando altri 2039 byte liberi per le variabili locali. Il massimo è 2048 byte.

Quando dico "chiudo lo sketch e non il programma" voglio dire chiudo il tab dello sketch di nome "pippo" e non tutta l'applicazione, ovvero l'IDE, l'EXE per intenderci.

Si, mi dice proprio "done uploading" con un errore sullo sketch che sto compilando! Proprio così! Ovviamente è chiaro che quello che sta compilando lui non è la versione visibile a schermo ma una versione dello sketch precedente alla modifica (di quanto precedente non so).

E' un problema random che non sono riuscito a capire da dove viene fuori. Ho letto che qualche altro utente lo ha avuto cercando su stackexchange, ma non è riportata soluzione.

Comunque provo ad aggiornare con la nuova versione e se dovesse ricapitare vi faccio vedere uno screenshot!

Grazie.

Tieni conto che ieri è uscita addirittura la versione 1.8.11

Daigs:
Quando dico "chiudo lo sketch e non il programma" voglio dire chiudo il tab dello sketch di nome "pippo" e non tutta l'applicazione, ovvero l'IDE, l'EXE per intenderci.

Ma infatti te l'hanno già chiesto se hai un progetto con più "tab", bastava dire di si, o anche solo postare uno screenshot dell'IDE come ti avevo chiesto anche io. Ma passiamo oltre:

Si, mi dice proprio "done uploading" con un errore sullo sketch che sto compilando! Proprio così!
E' un problema random che non sono riuscito a capire da dove viene fuori.

Vediamo bene come si possa verificare.
Tu in una cartella metti un file "programma.ino" vuoto (solo con setup e loop) ed un file "prova.h" dove metti che so, una riga con:
int prova = 0;
Ora apri quel progetto, e vedrai le due tab, esatto? Ok, ora compila col primo tasto ("Verifica"), e ti compila. Tutto regolare. Ora modifica il file "prova.h" e togli il punto e virgola e mettici robaccia, tipo:
int prova = 0
hfjhdjhjdf
Ora salva e compila di nuovo. Sorpresa! Compila. Come mai? Semplice, QUEL file non è referenziato da nessuna parte e dato che il compilatore compila a partire dal programma principale *.ino, se non incontra mai nessun riferimento a quel file, non lo considera.

Ora prova ad aggiungere nel file .ino la: #include "prova.h"
e vedrai che ora l'errore c'è.

Inoltre non ho ancora capito bene se hai una tab di un file che fa parte del tuo progetto (ossia la cartella) perché tu debba volerla chiudere (e mi chiedo anche come, visto che nell'IDE Arduino non vedo tasti per chiudere una singola tab), per cui credo che tu debba comunque rivedere la struttura dei file del tuo progetto...