dirottare un Serial.Write su USB Host (progetto per controller Zoom ms-50g)

Buongiorno a tutti, è da un paio di settimane che sfrutto il periodo di quarantena forzata per noi Italiani, per cercare di creare un controller per questo pedale: Zoom ms-50g

La mie dotazioni per la realizzazione del progetto sono: Arduino Uno, UsbHost, il suddetto pedale, il cavo usb-minuUsb per pilotarlo e tanta tanta pazienza.

Ho spulciato in ogni dove per cercare di risolvere da me il problema, quando sono arrivato quasi al traguardo ho trovato un programma già scritto e le spiegazioni dettagliate per la realizzazione hardware... ma qui è nato il problema: il progetto online prevedeva un host usb già programmata per ricevere il serial.write direttamente dal piedino TX di Arduino, ovviamente mi sono orientato su questo HostUsb anch'io ma per la legge di Murphy non è più in produzione, quindi ho ripiegato sulla più comune scheda HostUsb presente su Amazon.
Ho installato tutte le librerie relative, e ho provato se funzionava attraverso il programma di esempio per leggere da tastiera che restituisce il codice ASCII, tutto perfettamente funzionante.

Il mio problema adesso è quello di dirottare il SerialWrite dal piedino Tx all'uscita Usb per essere inviato al pedale da controllare.
Ho provato a fare copia e incolla dai diversi progetti di esempio con scarsi risultati, ma non riesco a trovare molte informazioni su come utilizzare la libreria USB Host Shield 2.0.
Vi allego il programma che ho trovato (quello originale che non prevede la presenza dell'HostUsb) e spero in un vostro aiuto perchè sono ad un passo dal traguardo e non mi voglio arrendere proprio ora che ho scoperto questo bellissimo mondo

int presetSwitch[] = {17,16,15,14}; // presets 1 to 4
const int rangeSwitch = 18; // add or disminish +4 (range)
const int patchLed[] = {2,3,4,5}; //led per patch
const int bankLed = 12; // led for bank on/off
int range = 0;
int programChangeValue = 0; // if you want to begin from preset 1
int dlay = 260; // adjust this to taste

/******************************************************/
void setup()
{
for(int i=0; i<4; i++)
{
  pinMode(presetSwitch, INPUT_PULLUP);
  pinMode(patchLed, OUTPUT);
  digitalWrite(patchLed, LOW);
}
pinMode(bankLed, OUTPUT);
digitalWrite(bankLed, LOW);
pinMode(rangeSwitch, INPUT_PULLUP);
//Serial.begin(9600);
Serial.begin(31250); /* for midi communication - pin 1 TX */
}
/*********************************************************/
void midiProg(byte pcNum)
{
  Serial.write(0xC0); //midi program change status
  Serial.write(pcNum);
}
/*********************************************************/
void rangeValue() //select presets 1 to 4 or 5 to 8
{
  if (digitalRead(rangeSwitch)!= HIGH)
  {
   range = range +4; // add 4
   digitalWrite(bankLed, HIGH);
   delay(dlay);
   if(range >4) // add as many ranges you like (multiples of four)
   {
    range = 0; // minus 4
    digitalWrite(bankLed, LOW);
   }
   //Serial.print("range = ");
   //Serial.println(range);
  }

}
/*********************************************************/
void clearAllLeds(int except)
{
for(int j=0; j<4; j++)
{
  digitalWrite(patchLed[j], LOW);
}
digitalWrite(patchLed[except], HIGH);
}
/*********************************************************/
void loop()
{
rangeValue();
for(int i=0; i<4; i++)
{
  if(digitalRead(presetSwitch)!= HIGH)
  {
  programChangeValue = i + range;
  //Serial.println(programChangeValue);
  midiProg(programChangeValue);
  clearAllLeds(i);
  delay(dlay);
  }
}
}

MS70_midi_increase_decrease-2.0original.ino (1.7 KB)

>kenzobengy: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

Grazie, purtroppo ho iniziato a lavorare al momento... Stasera provvederò a modificare tutto seguendo le regole... Ovviamente grazie per avermi dato queste informazioni che irroneamente ho tralasciato :relaxed: buona giornata

Fatto :slight_smile: