Compatibilità Arduino Mega 2560 on Mega R3

Buona sera,
sono un utilizzatore non professionale, autodidatta.
Nel 2016 ho programmato una scheda Mega 2560 per il comando di un amplificatore di potenza RF con pilotaggio di un motore che aziona un commutatore + 2 servo che azionano i condensatori variabili. Le posizioni sono memorizzate e richiamate in base ad alcune condizioni diverse. Il programma consta di circa 3500 linee, forse un programmatore esperto ne avrebbe usato la metà ma, come ho detto, non sono esperto. Il tutto ha funzionato egregiamente fino a poco tempo fa. Ultimamente ho provato a caricare un programma con alcuni cambiamenti ma la scheda non comunica più. Ho quindi acquistato una nuova scheda che credo sia originale, marcata Mega R3 e qui sono cominciati i problemi, in fase di verifica escono un paio di messaggi di errore: il primo, riguardante il display con comunicazione I2C lo ho risolto cambiando lcd.begin(); con lcd.init(); e l'errore non è più comparso. Il secondo errore è relativo ai servo:

error: no matching function for call to 'Servo::write(int&, int)'

e si riferisce, credo, alla riga di programma seguente:

servo_tune.write (val_EE_TUNE,30);

Non so come venirne fuori, ribadisco che con la vecchia scheda il programma girava benissimo.

Grazie per ogni aiuto per risolvere il problema

Alfeo

Buonasera e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

Credo che i problemi che riscontri NON siano dovuti all'hardware (non ce ne sarebbe motivo, il ATmega2560 è sempre lo stesso), ma piuttosto ai vari aggiornamenti che, nel tempo, hanno subito le librerie, alcune perdendo totalmente la retrocompatibilità.

In questi casi c'è una sola cosa da fare ... armarsi di santa pazienza, studiarsi i sorgenti e gli esempi delle nuove librerie e modificare il programma di conseguenza.

Guglielmo

Grazie per la risposta, da quanto capisco il problema può essere correlato al comando write ed i valori che legge (sono richiamati da memorie) perché i servo vengono chiamati già in linee precedenti e non viene segnalato errore (sperando di essere stato chiaro).
Proverò a capire.
Grazie ancora

Per le librerie standard (come la Servo) fai sempre riferimento al loro reference ... in particolare, per il metodo write() della libreria Servo, si vede chiaramente che vuole UN solo parametro e NON due come gli passi tu ... :roll_eyes:

Guglielmo

Io aggiungo:

Se vuoi una mano a dare una "revisionata" al programma io e mio fratello ci siamo

Non abitiamo vicino, ma se lo pubblichi ci diamo uno sguardo

Forse ho scovato dove sta l'inghippo: nel programma scritto nel 2016 utilizzavo la libreria VarSpeedServo che ho scoperto non essere più supportata (infatti in fase di verifica leggevo messaggi di errore correlati ad essa) e che consentiva l'aggiunta di un parametro che consentiva di rallentare l'azione del servo. La ho quindi sostituita dalla libreria Servo che però, come segnala Guglielmo, accetta un solo parametro. Ho eliminato il parametro in eccesso e in fase di verifica non sono segnalati errori. Adesso devo provare la scheda collegandola all'hardware, vi terrò informati.
Grazie di tutto, Alfeo

Probabilmente, se hai ancora una copia della cartella della suddetta libreria e la metti nella attuale cartella delle librerie (si chiama "libraries" e si trova nella cartella che hai definito come tua cartella di sketchbook all'interno delle preferenze dell'IDE) ...dovresti riusicre a vederla ed ad utilizzarla ... :roll_eyes:

Guglielmo

... aggiungo, se non ce l'hai più, essa è comunque scaricabile da GitHub ... vedo che la puoi trovare QUI. Scarichi lo .zip, lo scompatti, prendi la cartella e la metti al posto giusto, dovresti poterla ancora utilizzare.

Guglielmo

P.S.: Il contenuto NON ripsetta le regole date da Arduino per le librerie, per questo non la trovi tra le librerie supportate e il "library manager" non la riconosce, ma, se il codice è corretto, installandola manualmente non ci dovrebbero essere problemi.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.