ho trovato in rete un pgm (Mauro Alfieri) per la gestione di un Player mp3
Il pgm utilizza la libreria DFRobotDFPlayerMini, ma in fase di compilazione mi escono i seguenti errori ..
Qualcuno mi sa aiutare ?
Grazie mille
In file included from mp3.ino:24:
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:72: error: ISO C++ forbids initialization of member '_timeOutDuration'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:72: error: making '_timeOutDuration' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:72: error: ISO C++ forbids in-class initialization of non-const static member '_timeOutDuration'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:75: error: a brace-enclosed initializer is not allowed here before '{' token
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:75: error: ISO C++ forbids initialization of member '_sending'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:75: error: making '_sending' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:75: error: invalid in-class initialization of static data member of non-integral type 'uint8_t [10]'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:77: error: ISO C++ forbids initialization of member '_receivedIndex'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:77: error: making '_receivedIndex' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:77: error: ISO C++ forbids in-class initialization of non-const static member '_receivedIndex'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:98: error: ISO C++ forbids initialization of member 'device'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:98: error: making 'device' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:98: error: ISO C++ forbids in-class initialization of non-const static member 'device'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:105: error: ISO C++ forbids initialization of member '_isAvailable'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:105: error: making '_isAvailable' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:105: error: ISO C++ forbids in-class initialization of non-const static member '_isAvailable'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:106: error: ISO C++ forbids initialization of member '_isSending'
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:106: error: making '_isSending' static
\libraries\DFRobotDFPlayerMini/DFRobotDFPlayerMini.h:106: error: ISO C++ forbids in-class initialization of non-const static member '_isSending'
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.
Dall'articolo per il punto 28 Alfieri ha le idee confuse:
" linea 28: definisci la funzione printDetail() che costruirai in seguito, non condivido fino in fondo il motivo di tale scelta ma è pur vero che l’IDE arduino comprende da solo cosa fare in caso di funzioni dichiarate due volte;"
Scusa, il mio commento non è pertinente al tuo problema. Mi stavo documentando e cliccando sul link ho letto gli articoli e mi ha colpito la descrizione di quel punto che errata e fuorviante e io non me lo aspettavo da Alfieri.
Tornando al tuo problema, io ho installato la libreria di di Angelo qiao, caricato lo sketch di esempio FullFunction e compila senza errori con Arduino IDE 1.8.19.
Tu che versione dell'ide hai?
Quale libreria hai installato?
Arduino 1.0.5-r2
(a dire il vero ad un avvio mi ha chiesto se volevo aggiornarlo .. adesso non me lo chiede più e non vedo una voce che me lo faccia aggiornare .. forse disinstallando ..)
Libreria: DFRobotDFPlayerMini-1.0.5.zip
Ti consiglio (siamo in tanti a consigliarlo) di scaricare il .zip (link) e scompattarlo in una directory che ti è più comoda. Poi entri dentro la directory il cui nome dovrebbe essere arduino-1.8.19 e crei la cartella di nome portable . Dopo fatto ciò esegui il file arduino e questo pensa a popolare la cartella portable. In questo modo ti conservi la versione che hai attualmente e i tuoi sketch che potrebbero non funzionare con la versione recente.
Se vuoi maggiori informazioni qui è descritta la procedura per la versione portable.
PS:Ovviamente dovrai installare la libreria dal lib manager con il nuovo ide.
quindi, se non ho capito male (non vorrei fare casini con la vecchia versione) ..
E' sufficiente creare una cartella ('portable' ) dentro alla cartella scaricata (mi sa che l'ultima versione è la '20') e una volta che si 'lancia' l'eseguibile viene riconosciuta appunto la presenza di questa cartella affinchè l'instalalzione e creazione di un eseguibile avvenga come 'portable' ?
L'ultima versione ufficiale è la 1.8.19 e la trovi nella sezione software del sito Arduino.
Cancella l'installazione attuale (incluse le cartelle ed i files temporanei), scarica il .zip (o il .dmg su macOS) ed scompattalo in una cartella dove hai i diritti di lettura/scrittura. Vai nella cartella "arduino" e crea al suo interno una cartella di nome "portable".
In questo modo hai fatto una versione "sandboxed", tutti i core, le librerie ed i tools resteranno dentro a tale cartella e NON sparsi per il disco. Questo ti permetterà anche di avere versioni differenti di Arduino che NON interferiscono tra loro, basterà infatti cambiare il nome della cartella principale, ad esempio: arduino_1.8.19 per la versione attuale e così vi per le altre versioni.
I tuoi sorgenti potranno invece continuare a stare dove ti fa più comodo e rimanere indipendenti dalle varie installazioni.
Grazie mille .. installata versione nuova ed ora il programma si compila !
Ne approfitto ..
dall'esecuzione del programma .. su monitor seriale mi esce:
aldilà delle 'segnalazioni' .. c'è un piccolo particolare che mi preoccupa ..
Se pur al massimo del volume ..
(myDFPlayer.volume(30); //Set volume value. From 0 to 30
Quello che si sente è veramente pochissimo ..
Suggerimenti ?
Grazie mille
Non capisco se gli altoparlanti che usi sono quelli nel link ebay oppure vorresti comprarli per usarli.
Comunque sono tweeter con crossover incorporato e serve solo per riprodurre le frequenze da circa 5000Hz a salire. Gli altoparlanti ad alta efficienza costano tanto e richiedono comunque un contenitore (cassa) altrimenti l'emissione anteriore essendo in contro fase rispetto alla emissione posteriore del cono si verifica un cortocircuito acustico.
Tu cosa hai collegato al momento. Potresti anche collegarci la casse del computer che sono amplificate.