Salve,
sto diventando matto dietro un problema che ho con uno sketch, premetto che lo sketch non è realizzato da me ma lo ho modificato e che il problema c'è anche con quello originale. Non riesco a compilare lo sketch con le versioni recenti della IDE Arduino (ho provato le 1.8.x) ma lo stesso sketch senza nessuna modifica funziona sulla IDE 1.5.8 senza nessun errore. Ho prima installato la versione installer Windows, poi sono passato a quella zip portable (in questo modo posso avere contemporaneamente le due versioni e poi ho letto che la versione installer da problemi). Vi allego il log del compilatore in formato txt, mentre per lo sketch vi invio i files che compaiono nella lista degli errori. In caso posso cercare di fare uno zip e mettere un link su qualche host se serve...
Mi date una mano? Grazie.
Ho continuato a cercare e leggere su vari siti (tutti in lingua inglese) e da quello che sono riuscito a capire il problema deriva dal fatto che il progetto è suddiviso in vari files .ino, .h e .cpp. Questi vengono ricombinati in fase di compilazione in un file unico ma seguendo un ordine alfabetico del nome file, quindi c'è la possibilità che qualche variabile o funzione venga richiamata nello sketch risultante prima che questa venga dichiarata.
Mi confermate che possa essere questo il problema che porta agli errori che ho linkato nel primo post?
E se si, come mai nella versione precedente (1.5.8) della IDE fila tutto liscio?
La soluzione che viene proposta è l'utilizzo della keyword EXTERN ma non ho capito come fare ad utilizzarla per ovviare ai problemi avuti. Qualcuno può dirmi se effettivamente possa essere la soluzione e magari spiegarmi esattamente come intervenire nel caso specifico?
Grazie.
EDIT: Allego anche il file Basesensor.h che potrebbe essere causa di tutto (viene definita una classe utilizzata poi in varie parti dello sketch).
Pensavo non si potessero allegare files.zip, altrimenti l'avrei fatto da subito. Grazie mille!
Allego il progetto completo più un file pdf che spiega come installare due librerie esterne necessarie allo sketch (Time e MsTimer2).
Si, scusate, non avevo precisato che andasse compilato per la mega e non per la uno (per la uno bisogna disattivare il log su SD dal file solar meter mini.ino e dal file userdefs.h).
Non sono ancora riuscito a provare con l'altra versione del IDE tra un paio d'ore lo faccio e vi aggiorno, anche se ho poche speranze dopo il post di Guglielmo).
Ho appena fatto una nuova installazione della IDE v1.8.5 versione zip portable su MS Windows 10 (v1803) e ho provato ad avviarla sia con privilegi admin che senza con lo stesso risultato (leggermente diverso dalla IDE v1.8.6 ma sempre senza riuscire a compilare):
ho creato una cartella dal nome "Solarmetermini" ho decompresso lo zip al suo interno...lanciato il "Solarmetermini.ino"...seguito il pdf per l'aggiunta delle due librerie....chiuso e riaperto il progetto per sicurezza...e compila...in allegato il mio output della compilazione
Stavo confrontando i due files txt (il mio con quello di orso) ed ho trovato una cosa strana, guardate la parte evidenziata nei due files:
nel mio che da errori è ripetuta due volte l'estensione .cpp (BaseSensor.cpp.cpp) invece nell'altro solo una volta (BaseSensor.cpp).
Che sia questo il problema? E da cosa potrebbe dipendere, dato che anche sul mio PC ma con la IDE v1.5.8 tutto funziona correttamente?
Scorrendo tutto il file txt relativo agli errori di compilazione, mi sono accorto che l'unico file del quale viene raddoppiata l'estensione .cpp è il file BaseSensor.cpp; gli altri file vengono sempre richiamati con l'estensione corretta (ad esempio S0Sensor.cpp oppure SPI.cpp).
Ho fatto una ulteriore prova rinominando il file BaseSensor.cpp e BaseSensor.h come BSensor.cpp e .h rispettivamente e modificando tutti i riferimenti all'interno dello sketch di conseguenza (pensando potesse dipendere dal fatto che superasse gli 8.3 caratteri) ma anche questo non risolve.
ORSO2001:
ho creato una cartella dal nome "Solarmetermini" ho decompresso lo zip al suo interno...lanciato il "Solarmetermini.ino"...seguito il pdf per l'aggiunta delle due librerie....chiuso e riaperto il progetto per sicurezza...e compila...in allegato il mio output della compilazione
Fai uno zip della cartella ed allegalo ... così provo anche con quello che a te compila ... :
Vi chiedo la cortesia di editare il file userdefs.h e togliere i dati personali che inavvertitamente ho lasciato (soprattutto la chiave pvoutput.org. Grazie. (il file zip messo da me l'ho già editato io).
Potresti fare anche uno screenshot della cartella temporanea dove avviene la compilazione per vedere quali files ci siano? Trovi il path corretto (cambia ad ogni compile) nel testo dei messaggi della ide e devi farlo senza chiudere la ide altrimenti la cartella viene eliminata. Grazie.