Ciao,
ho un'installazione di Arduino IDE 1.8.5 su Ubuntu 16.04 dove il codice in calce non da problemi.
Una seconda installazione con medesima IDE su Ubuntu 20.04 dove il controllo del codice da "RTC.h out of scope" alla riga RTC.setTime(TIME).
Cosa posso verificare che abbia comportamenti diversi nei due casi?
Grazie
Buonasera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentartiQUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto.
Di solito dipende dal mancato istanziamento dell'oggetto RTC, il programma che usi sui due sistemi è lo stesso? Se si nelle due installazioni dell'IDE hai messo la medesima libreria per la gestione dell'RTC?
@fabpolli
per quanto riguarda l'instanziamento il codice che funziona ha solo i riferimenti a RTC che vedi che vedi nel post e mi chiedo come funzioni visto che non c'è un oggetto instanziato.
Per quanto riguarda la libreria, ho installato RTC base. Ma utilizzo per altri motivi una libreria fornita da terzi che per quello che capisco include RTC.h, perché quando vedo l'errore dice che trova una prima libreria RTC e poi una seconda (con riferimento alla libreria di terzi) che non usa.
Può essere che la libreria di terzi istanzi in automatico un oggetto? Ma in ogni caso non capisco come possa funzionare.
Sto pensando di disinstallare l'IDE e copiare brutalmente le cartelle di quella che funziona: dovrebbe andare :
Si allora può dipendere da quello, se analizzi la libreria ci sta che trovi preistanziato l'oggetto (e già questo a me la farebbe abbandonare all'istante ). Nella seconda installazione la libreria RTC standard prevale e quindi il compilatore non trovando l'oggetto definito si impermalosice e restituisce errore
Il consiglio che di solito si da è quello di configurare l'IDE in modalità portable in modo che non ci creino casini con le librerie e che, copiando la cartella da un sistema ad un altro, ci si ritrovi nelle medesime condizioni
Non so se ho fatto tutto quello che serviva ma neanche eliminando tutte le cartelle Arduino che avevo (IDE, librerie, sketch) e copiando la precedente cartella (Ubuntu 16) nella nuova installazione (Ubuntu 20) funziona.
La cosa che mi da più fastidio è non capire perché non va.
Nel frattempo mi tocca "riscrivere" il codice.
PS: grazie per il "portable" che non conoscevo, utile.
Stai usando una board non arduino team, mi pare una industrialshield se non ho capito male. Dal report pare che quel core ha già una sua libreria rtc, se quella shield e board ha un rtc on board.
Che loro "sfruttino" l'ide arduino okay, ma se ci sono problemi con le loro librerie, dovresti chiedere sul loro forum
Confermo ... SE non è una delle classiche schede Arduino o ESP, ampiamente diffuse, ma un hardware custom di un determinato produttore, ti devi rivolgere al loro forum di supporto, noi qui NON conosciamo quelle schede e non sappiamo né cosa fanno né come si usano. Grazie.
Sì certo, non intendevo chiedere supporto per un'altra liberia, ma solo per capire perché non va, o meglio come capire cosa non va.
Siccome la libreria funzione da una parte per me dovrebbe funzionare anche dall'altra, se non lo fa immagino sia un problema di "configurazione".
Non essendo esperto non immaginavo che una libreria potesse avere all'interno altre librerie "standard", al limite che le richiamasse, e nel caso ce ne siano più di una con lo stesso nome con che logica scelga quale usare.
Grazie comunque per la informazioni.
Non essendo esperto non immaginavo che una libreria potesse avere all'interno altre librerie "standard", al limite che le richiamasse, e nel caso ce ne siano più di una con lo stesso nome con che logica scelga quale usare.
Grazie comunque per la informazioni.
Ti spiego meglio il concetto che sta alla base di Arduino Ide.
Tu puoi aggiungere librerie, ma di base tu scegli una board e con quella board viene caricato un core. Il core altro non è che una serie di librerie/framework adattate a quella board. Di base i comandi classici Arduino,. Ma nessuno vieta che chi ti dà quel core non decida di mettere nel core cos'è aggiuntive.
Esempio il comando classico printf nel core Arduino per avr/atmel328 e mega non c'è.
Nel core del esp32/8266 di espressif c'è
Quindi in generale lavorando con una board è preferibile iniziare con i relativi esempi e l'eventale documentazione per capire quali funzioni sono già incluse ed eventualmente aggiungere librerie "esterne" nel caso manchino funzionalità.
Grazie
mymage:
Quindi in generale lavorando con una board è preferibile iniziare con i relativi esempi e l'eventale documentazione per capire quali funzioni sono già incluse ed eventualmente aggiungere librerie "esterne" nel caso manchino funzionalità.
Decisamente si!
Sei sicuro della compatibilità, hai meno dipendenze nel tuo progetto, sono "ottimizzate" per la tua scheda...
Spesso nei framework ci sono tutta una serie di librerie già incluse che chissà per quale motivo vengono "ignorate" dai più (complici i soliti tutorial copia/incolla che dilagano sul web).
Ad esempio, il framework Arduino per ESP8266 (giusto per citarne uno che conosco abbastanza bene) ne ha una gran quantità...
Mi sento il dovere di condividere la soluzione dell'arcano.
Il problema stava, come supponevo, in una diversa configurazione.
La differenza stava nella selezione del modello della scheda in uso: quella che funziona si chiama "M-Duino 42+" e quella che non funziona si chiama "M-Duino 42", evidentemente perché quel "+" indica la presenza di funzioni aggiuntive come l'RTC.
Grazie ancora a chi a pazientemente risposto e mi ha dato comunque informazioni utili.