error nella compilazione dello sketch per progetto controllo Midi Patch Chitarra

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 ...

Guglielmo

Sta cercando di scrivere il pid?

Datman:
Sta cercando di scrivere il pid?

Anche quella è la mia sensazione, ma senza il codice completo è difficile da dirsi, per cui .... il link a dove a preso il codice sarebbe utile :wink:

Guglielmo

Grazie mille, posto il link della pagina

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.

Guglielmo

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

Queste sono le mie librerie installate:

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.

Guglielmo

P.S.: anche io sono su macOS

...fatto ma purtroppo continua a generare il solito errore.
Ho un PC portatile domani provo con quello a fare tutto ex novo
Grazie Guglielmo

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:

const uint8_t button_l_pin = 2;
const uint8_t button_r_pin = 3;
const uint8_t display_clk_pin = 5;
const uint8_t display_dio_pin = 6;
const uint8_t sdcard_ss_pin = 4;
// usbh_int_pin 9
// usbh_ss_pin 10

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.

Guglielmo

Ok Proviamo
Grazie 1000

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:

const uint8_t button_l_pin = 2;
const uint8_t button_r_pin = 3;
const uint8_t display_clk_pin = 5;
const uint8_t display_dio_pin = 6;
const uint8_t sdcard_ss_pin = 4;
// usbh_int_pin 9
// usbh_ss_pin 10

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.

DannyLux:
... Ma esiste uno sketch tipo i2c_scanner (per localizzare gli indirizzi/porta dei display Oled) però dedicato agli Host-USB?

... non ne conosco ::slight_smile:

Guglielmo