Salve a tutti, sono al mio primo progetto su Arduino, ovviamente realizzato grazie al materiale reperito sul web, sketch compreso al quale ho solo apportato qualche personalizzazione.
Si tratta semplicemente del controllo di cambiamento Patch di un amplificatore per chitarra tramite la sua porta USB, aggirando il macchinoso e ingombrante collegamento al PC, utilizzando per lo scopo:
Scheda Arduino
Usb-Host
Lettore Card SD
Display TM1637
due pulsanti momentanei.
Non mi prolungo oltre sul progetto ma aggiungo solo che i vari test eseguiti per verificare il corretto collegamento delle periferiche ha dato responso positivo. Ciò nonostante la compilazione si blocca alla riga:
pid = Midi.pid;
Come posso risolvere questo errore?
Ho provato a cercare sul web con tale codice ma non ho ottenuto nessun riscontro positivo.
Grazie
Questo è il responso dettagliato dello sketch sull'errore
Arduino:1.8.8 (Mac OS X), Scheda:"Arduino/Genuino Uno"
In file included from /Users/Dannylux/Downloads/_000-THR_Footswitch-master/THR_Footswitch/THR_Footswitch.ino:35:0:
/Applications/Arduino.app/Contents/Java/libraries/USB_Host_Shield_2.0-master/usbh_midi.h: In function 'void loop()':
/Applications/Arduino.app/Contents/Java/libraries/USB_Host_Shield_2.0-master/usbh_midi.h:54:23: error: 'uint16_t USBH_MIDI::vid' is protected
uint16_t pid, vid; // ProductID, VendorID
^
THR_Footswitch:182:18: error: within this context
if (Midi.vid != vid || Midi.pid != pid) {
^
In file included from /Users/Dannylux/Downloads/_000-THR_Footswitch-master/THR_Footswitch/THR_Footswitch.ino:35:0:
/Applications/Arduino.app/Contents/Java/libraries/USB_Host_Shield_2.0-master/usbh_midi.h:54:18: error: 'uint16_t USBH_MIDI::pid' is protected
uint16_t pid, vid; // ProductID, VendorID
^
THR_Footswitch:182:37: error: within this context
if (Midi.vid != vid || Midi.pid != pid) {
^
In file included from /Users/Dannylux/Downloads/_000-THR_Footswitch-master/THR_Footswitch/THR_Footswitch.ino:35:0:
/Applications/Arduino.app/Contents/Java/libraries/USB_Host_Shield_2.0-master/usbh_midi.h:54:23: error: 'uint16_t USBH_MIDI::vid' is protected
uint16_t pid, vid; // ProductID, VendorID
^
THR_Footswitch:185:24: error: within this context
vid = Midi.vid;
^
In file included from /Users/Dannylux/Downloads/_000-THR_Footswitch-master/THR_Footswitch/THR_Footswitch.ino:35:0:
/Applications/Arduino.app/Contents/Java/libraries/USB_Host_Shield_2.0-master/usbh_midi.h:54:18: error: 'uint16_t USBH_MIDI::pid' is protected
uint16_t pid, vid; // ProductID, VendorID
^
THR_Footswitch:186:24: error: within this context
pid = Midi.pid;
^
exit status 1
within this context
Allora,
se apri e compili l'esempio USBH_MIDI_Dump vedrai che gli statement tipo "if (Midi.vid != vid || Midi.pid != pid) {" sono usati anche li e NON danno alcun errore, quindi ... il problema NON è nella libreria, i cui esempi funzionano correttamente, ma nel programma che hai scaricato. Metti un link che ci diamo un'occhiata anche noi ...
C'è qualche cosa che NON va nella tua installazione ... probabilmente qualche libreria vecchia ...
... ho scaricato quell'applicazione e compilata con Arduino IDE 1.8.7:
Sketch uses 17308 bytes (53%) of program storage space. Maximum is 32256 bytes.
Global variables use 1210 bytes (59%) of dynamic memory, leaving 838 bytes for local variables. Maximum is 2048 bytes.
... come vedi, nessun problema, compila senza errori.
gpb01:
C'è qualche cosa che NON va nella tua installazione ... probabilmente qualche libreria vecchia ...
... ho scaricato quell'applicazione e compilata con Arduino IDE 1.8.7:
... come vedi, nessun problema, compila senza errori.
Guglielmo
Capperi!!
Cosa mi consigli di fare?
Quale potrebbero essere le librerie incriminate e quindi da eliminare e aggiornare?
...aggiungo che io utilizzo Arduino 1.8.8 per Mac
Grazie gbp01
Elimina la USBH_MIDI-master e la USB_Host_Shield_2.0-master che hai ed installa l'ultima versione da QUI ... che include già la parte MIDI e non necessita di altro.
Finalmente !
Grazie alle tue indicazioni Guglielmo, ora Arduino riesce a compilare ed inviare lo sketch alla scheda Arduino ma il dispositivo che è stato senz'altro assemblato bene, seguendo le indicazioni e relativo schema elettrico, tra l'altro molto semplice, si blocca ed il display TM1637 lascia intendere che non riesce a comunicare con la porta USB.
Ora mi sorge un dubbio e cioè che la scheda Host-Usb che ho installato, di quelle da inserire esattamente sopra, richiede di assegnare porte diverse da quelle incluse nello sketch che dovrebbe gestire il progetto che riporta esattamente:
Come posso cercare di risolvere questo nuovo problema che mi si è presentato per vedere finalmente prendere vita a questo mio primo progetto Arduino?
..portate pazienza ma sarà l'età, sarà la totale inesperienza tutto mi sembra molto complicato ...anche reperire spiegazioni sul web.
Allego foto della Scheda Host-Usb che ho installato sopra a quella di Arduino UNO
Grazie
... come detto, prima di iniziare con programmi di "terzi" e bene provare e studiare i vari esempi che sono a corredo della libreria e che permettono, con piccoli semplici codici, di verificare il corretto funzionamento della scheda USB Host.
Quindi ... metti da parte il tuo progetto e comincia a verificare gli esempi a corredo se funzionano e come sono fatti. Una volta che funzionano e che vedi come richiedono la scheda venga impostata passi alla tua applicazione completa.
Ho fatto vari test e sembra che non venga riconosciuta la porta Host-USB.
Ora provo ad ordinarne un'altra su Amazon, una di quelle in formato ridotto con i fili a saldare così ho la certezza dei Pin che usa
Giustamente Guglielmo mi consigli ora all'inizio a cimentarmi con progetti più semplici e di facile interpretazione per capirne almeno le basi, Questa è senz'altro una cosa che ho messo in preventivo di fare a breve, ma mi sono avvicinato ad Arduino proprio perchè ho reale necessità e diciamo anche un po di urgenza a realizzare questo piccolo dispositivo per l'amplificatore della mia chitarra poi mi si è aperto un mondo ho capito che c'è la possibilità di sfruttare questo meraviglioso sistema Hardware-Software per l'ambiente musicale ed allora ...l'appetito vien mangiando
Ritornando al progetto
Una domanda forse stupida ...anzi senz'altro
Ma esiste uno sketch tipo i2c_scanner (per localizzare gli indirizzi/porta dei display Oled) però dedicato agli Host-USB?
Ora ne ho ordinato un'altro su Amazon di Host-Usb, di quelli molto compatti con i fili a saldare e vediamo che succede.
Lo sketch che accompagna il progetto a cui sto lavorando, ovviamente scritto da terzi, riporta ad un certo punto:
a sottolineare che i pin da utilizzare per l'Host-Usb sono 9 e 10.
Con l'Host che ho acquistato e che dovrebbe arrivarmi martedì, problemi di interfacciamento non dovrei averne.