Ciao a tutti!
Ho bisogno di leggere attraverso arduino dei messaggi midi ricevuti da una tastiera musicale. Arduino riesce a leggere i messaggi in ingresso,ma c'è un problema: non li legge correttamente. Ora mi spiego meglio! In pratica,appena premo un tasto sulla tastiera musicale,arduino mi legge tutti e 3 i messaggi corretti ( Ovvero il comando,la nota e la velocità),ma appena rilascio il tasto non mi legge tutti i messaggi,ovvero ho uno zero o un altro valore in uno dei 3 messaggi ricevuti.Se invece tengo premuto il tasto per qualche secondo e poi lo rilascio,i messaggi sono tutti corretti. Come posso ovviare a questa situazione? grazie a tutti!
PS.Utilizzo il mega2560 in modo che posso utilizzare una seriale per il midi ed una per leggere dal pc cosa fa la scheda,e la seriale che comunica col pc ho provato a settarla sia a 9600 baud che a 115200.
Vi posto il codice di prova che sto utilizzando
byte cmd=0;
byte nota=0;
byte vel=0;
void setup(){
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
Serial.begin(115200);
Serial1.begin(31250); // MIDI baud rate
}
void loop(){
if(Serial1.available()){
cmd=Serial1.read();
// nota=Serial1.read();
//vel=Serial1.read();
if(cmd==248 || cmd==254){;} // se il messaggio è 248(clock) o 254 (active sensing) non faccio nulla
else{
Serial.println(cmd,DEC);
/* Serial.print(" ");
Serial.print(nota,DEC);
Serial.print(" ");
Serial.print(vel,DEC);
Serial.println();*/
}
}
}