arduino et live ableton

salut,

malgré tout les info que j’ai trouve sur internet, je coince…
mon but et de piloter un chariot d’imprimante
en midi via live ableton, qui communique avec larduino via hairless midi

une note midi correspond a une position du chariot c1 position 1 , c2 position 2 ect…

mon matériel est constituer de chariot d’imprimant avec deux fourche optique pour avoir position est sens(j’ai dix position)
le moteur est câbler avec un l293d
tout marche

j’ai fait un premier code qui fonctionne ou je tape le chiffre entre 1 et 10 dans le moniteur, le chariot va a la position demander pas de souci…

après j’ai fait un deuxième code que je poste ici

int encoder_in = 21;
int encoder_b = 22;
int motorA = 9;
int motorB = 8;
volatile unsigned int pulses = 36;  // 36 etant egal a C1

byte incomingByte;
byte note;
byte velocity;
int chan = 1;

int action = 2;
const int lowNote = 36;



// fonction compteur du capteur de position
void count() {
  if (digitalRead(encoder_b) == LOW) {
    pulses++;
  }

  else {
    pulses--;
  }
}



void setup() {
  Serial.begin(9600);
  pinMode(encoder_in, INPUT);
  pinMode(encoder_b, INPUT);
  pinMode(motorA, OUTPUT);
  pinMode(motorB, OUTPUT);

  attachInterrupt(2, count, RISING);

}

void loop() {

  if (Serial.available() > 0) {
    incomingByte = Serial.read();

    if (incomingByte == 143 + chan) {
      action = 1;
    }
    else if (incomingByte == 127 + chan){
    action = 0;
  }

  else if ((action == 0) && (note == 0)) { // si on reçoit noteOff on attend quelle note(databyte)
  arretChariot();
    note = incomingByte;

    note = 0;
    velocity = 0;
    action = 2;
  }
  else if ((action == 1) && (note == 0)) { // si on recoit un noteOn on atennd pour quelle note (databyte)
    note = incomingByte;
  }

  else if ((action == 1) && (note = ! 0)) { // cest un noteOn on cest laquelle et on attend la velocity
    velocity = incomingByte;
    deplacementChariot(note, velocity);
      note = 0;
      velocity = 0;
      action = 0;
    }

    else {
      //NADA
    }
  }
}

void deplacementChariot (byte note, byte velocity) {

  if (note == pulses ) {// si le chariot et a la bonne position il bouge pas

    digitalWrite(motorA, LOW);
    digitalWrite(motorB, LOW);
  }

  else if (note >pulses) { // si le chariot nest pas a la bonne position il se deplace tant que

    digitalWrite(motorA, LOW);
    digitalWrite(motorB, HIGH);
  }

  else if (note < pulses) {// si le chariot nest pas a la bonne position il se deplace tant que

    digitalWrite(motorA, HIGH);
    digitalWrite(motorB, LOW);

  }
}

void arretChariot() {
   digitalWrite(motorA, LOW);
    digitalWrite(motorB, LOW);
  }

le moteur s’actionne a toute les noteON et s’eteind au NOteOff et se déplace toujours dans le même sens comme si
il ne recevait plus sa position de la pin interrupt
j’arrive pas a comprendre mon erreur,
alors si on peut me dire ou je me plante ce serait très sympa

merci d’avance

J'ai pas trop compris le montage, mais quelques ajouts de Serial.print(ma_variable) dans le code devraient permettre de voir ce qui bug. http://arduino.cc/en/serial/print

salut, oui se serait bien mais je peux pas ouvrir le moniteur quand hairless midi est activé vu qu'il utilise lui même la liaison serial alors je pourrais pas voir ce que mes Serial.print() me disent, il me semble

fait un port série supplémentaire avec SoftwareSerial pour le midi. Il te reste le Serial habituel pour le debug

les infos midi passe par le serial de lordi en usb en interne, est ce que sa me permetrait de creer une autre liaison serie virtuelle,?