lire du midi depuis le serial arduino

salut, depuis environ 1 an je travaille sur un projet de surface de contrôle midi avec fader motorisé pour mes logiciels de son. je voudrais recevoir du midi depuis le serial pour allumer les LEDs d'un bargraph. le seul problème, c'est que ne parvient pas a lire mes bytes en entiers. en ce qui est de l'octet de type c'est bon. mais c'est après que ca devient plus difficile car je ne parviens pas a lire l'octet de valeur ni celui de canal.bref ca ne marche pas...

byte commandByte;
byte noteByte;
byte velocityByte;


void setup(){
  Serial.begin(115200);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
}

void checkMIDI(){
  do{
    if (Serial.available()){
      commandByte = Serial.read();
      noteByte = Serial.read();
      velocityByte = Serial.read();
      if (commandByte == 0xd0)
{
        if (noteByte == 0x0a && velocityByte > 0){
          digitalWrite(13,HIGH);
        }
      }
    }
  }
  while (Serial.available() > 2);
}
    

void loop(){
  checkMIDI();
  delay(100);
  digitalWrite(13,LOW);
}

mon code ressemble a ca.
merci.

salut, depuis environ 1 an je travaille sur un projet de surface de contrôle midi avec fader motorisé pour mes logiciels de son. je voudrais recevoir du midi depuis le serial pour allumer les LEDs d'un bargraph. le seul problème, c'est que ne parvient pas a lire mes bytes en entiers. en ce qui est de l'octet de type c'est bon. mais c'est après que ca devient plus difficile car je ne parviens pas a lire l'octet de valeur ni celui de canal.bref ca ne marche pas...

byte commandByte;
byte noteByte;
byte velocityByte;


void setup(){
  Serial.begin(115200);
  pinMode(13,OUTPUT);
  digitalWrite(13,LOW);
}

void checkMIDI(){
  do{
    if (Serial.available()){
      commandByte = Serial.read();
      noteByte = Serial.read();
      velocityByte = Serial.read();
      if (commandByte == 0xd0)
{
        if (noteByte == 0x0a && velocityByte > 0){
          digitalWrite(13,HIGH);
        }
      }
    }
  }
  while (Serial.available() > 2);
}
    

void loop(){
  checkMIDI();
  delay(100);
  digitalWrite(13,LOW);
}

mon code ressemble a ca.
merci.

Tu lis 3 caractères sans être certain qu'ils soient reçus.

if (Serial.available() >= 3)

Ou utiliser une méthode plus sophistiquée.

http://www.gammon.com.au/serial

djnaoki:
salut, depuis environ 1 an je travaille sur un projet de surface de contrôle midi avec fader motorisé pour mes logiciels de son. je voudrais recevoir du midi depuis le serial pour allumer les LEDs d'un bargraph. le seul problème, c'est que ne parvient pas a lire mes bytes en entiers. en ce qui est de l'octet de type c'est bon. mais c'est après que ca devient plus difficile car je ne parviens pas a lire l'octet de valeur ni celui de canal.bref ca ne marche pas...

bonsoir
Il y a pas mal de ressources arduino/midi
lire çà

oui j'ai déjà regarder de ce coté la. mais je crois que je viens de me débloquer en fin de compte :stuck_out_tongue: