Salve ragazzi. Sto cercando di replicare un progetto che si trova in rete e che mi consente di cambiare il preset del mio pedale (chitarra) tramite l'ultilizzo dell'usb host shield.
Di seguito il codice:
#include <SPI.h>
#include <Usb.h>
#include <usbhub.h>
#include <usbh_midi.h>
#define PULSANTE1 12
#define PULSANTE2 11
#define PULSANTE3 9
#define PULSANTE4 8
int tasto1;
int tasto2;
int tasto3;
int tasto4;
USB Usb;
USBH_MIDI Midi(&Usb);
byte PatchA1 = 0x31;
byte PatchA2 = 0x2F;
byte PatchB1 = 0x30;
byte PatchB2 = 0x2B;
void setup() {
Serial.begin(9600);
pinMode(PULSANTE1,INPUT);
pinMode(PULSANTE2,INPUT);
pinMode(PULSANTE3,INPUT);
pinMode(PULSANTE4,INPUT);
}
void loop() {
tasto1 = digitalRead(PULSANTE1);
tasto2 = digitalRead(PULSANTE2);
tasto3 = digitalRead(PULSANTE3);
tasto4 = digitalRead(PULSANTE4);
if(tasto1==HIGH) {
Serial.println("bypass");
SendMIDI(A1);
}
if(tasto2==HIGH) {
Serial.println("preset1");
SendMIDI(PatchA2);
}
if(tasto3==HIGH) {
Serial.println("preset2");
SendMIDI(PatchB1);
}
if(tasto4==HIGH) {
Serial.println("preset3");
SendMIDI(PatchB2);
}
}
void SendMIDI(byte number) {
Usb.Task();
if(Usb.getUsbTaskState() == USB_STATE_RUNNING) {
byte Message[2];
Message[0]=0xC0;
Message[1]=number;
Midi.SendData(Message);
delay(10);
}
}
Il problema sta nel fatto che non riesco ad entrare nell'IF della funzione SendMIDI. Anche eliminando in modo forzato tale condizione, non riesco comunque ad inviare il comando di cambio preset al pedale. Probabilmente c'è qualche errore nel codice ma più che altro mi interesserebbe sapere come far comunicare correttamente usb shield e il pedale. Ci sono diversi jumper sulla shied, magari dovrei cortocircuitare qualcuno ma non saprei.
Di seguito la foto della shield:

Grazie a tutti anticipatamente!