Bonjour, j'ai acheté un shield midi pour mon arduino http://www.lextronic.fr/P18769-platine-midi-shield.html, J'ai un programme qui permet d'allumer différente led en fonction des notes joué.
Ce programme fonctionne lorsque je branche un piano midi à mon pc et que j’envoie ce signal à l'arduino via le port serial "programming port" par l’intermediairede hairless midi serial. Mais j'ai justement acheté ce shield pour pouvoir me passer du pc et de relier directement mon synthé qui a un prise midi à l'arduino mais l'arduino ne réagit pas.
Voici le programme
int pompe1 =53;
int pompe2 =51;
int pompe3 =49;
int pompe4 =47;
int pompe5 =45;
int pompe6 =43;
int pompe7 =41;
int pompe8 =39;
byte commandByte;
byte noteByte;
byte velocityByte;
byte noteOn = 144;
void setup(){
Serial.begin(9600);
pinMode(pompe1,OUTPUT);
pinMode(pompe2,OUTPUT);
pinMode(pompe3,OUTPUT);
pinMode(pompe4,OUTPUT);
pinMode(pompe5,OUTPUT);
pinMode(pompe6,OUTPUT);
pinMode(pompe7,OUTPUT);
pinMode(pompe8,OUTPUT);
digitalWrite(pompe1,LOW);
digitalWrite(pompe2,LOW);
digitalWrite(pompe3,LOW);
digitalWrite(pompe4,LOW);
digitalWrite(pompe5,LOW);
digitalWrite(pompe6,LOW);
digitalWrite(pompe7,LOW);
digitalWrite(pompe8,LOW);
}
void checkMIDI(){
do{
if (Serial.available()){
commandByte = Serial.read();//read first byte
noteByte = Serial.read();//read next byte
velocityByte = Serial.read();//read final byte
if (commandByte == noteOn){//if note on message
if (noteByte == 60 && velocityByte > 0) {digitalWrite(pompe1,HIGH);}else;
if (noteByte == 61 && velocityByte > 0) {digitalWrite(pompe2,HIGH);}else;
if (noteByte == 62 && velocityByte > 0) {digitalWrite(pompe3,HIGH);}else;
if (noteByte == 63 && velocityByte > 0) {digitalWrite(pompe4,HIGH);}else;
if (noteByte == 64 && velocityByte > 0) {digitalWrite(pompe5,HIGH);}else;
if (noteByte == 65 && velocityByte > 0) {digitalWrite(pompe6,HIGH);}else;
if (noteByte == 66 && velocityByte > 0) {digitalWrite(pompe7,HIGH);}else;
if (noteByte == 67 && velocityByte > 0) {digitalWrite(pompe8,HIGH);}else;
}
}
}
while (Serial.available() > 2);//when at least three bytes available
}
void loop(){
checkMIDI();
delay(1000);
digitalWrite(pompe1,LOW);
digitalWrite(pompe2,LOW);
digitalWrite(pompe3,LOW);
digitalWrite(pompe4,LOW);
digitalWrite(pompe5,LOW);
digitalWrite(pompe6,LOW);
digitalWrite(pompe7,LOW);
digitalWrite(pompe8,LOW);
}
Merci de votre aide