const int photo1 = 2; const int photo2 = 3; const int photo3 = 4; const int photo4 = 5; const int photo5 = 6; const int photo6 = 7; const int photo7 = 0; const int photo8 = 1; const int motgauche = 9; const int motdroit = 10; // initialisation de l'interruption void pciSetup(byte pin) { *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin)); PCIFR |= bit (digitalPinToPCICRbit(pin)); PCICR |= bit (digitalPinToPCICRbit(pin)); } // Programme d'interruption du port C ISR (PCINT2_vect) { while(digitalRead(photo1) == LOW) { digitalWrite(motgauche,HIGH); digitalWrite(motdroit,HIGH); } while(digitalRead(photo2) == LOW) { digitalWrite(motgauche,LOW); digitalWrite(motdroit,HIGH); } while(digitalRead(photo3) == LOW) { digitalWrite(motgauche,LOW); digitalWrite(motdroit,HIGH); } while(digitalRead(photo4) == LOW) { digitalWrite(motgauche,LOW); digitalWrite(motdroit,HIGH); } while(digitalRead(photo5) == LOW) { digitalWrite(motgauche,HIGH); digitalWrite(motdroit,LOW); } while(digitalRead(photo6) == LOW) { digitalWrite(motgauche,HIGH); digitalWrite(motdroit,LOW); } while(digitalRead(photo7) == LOW) { digitalWrite(motgauche,HIGH); digitalWrite(motdroit,LOW); } while(digitalRead(photo8) == LOW) { digitalWrite(motgauche,HIGH); digitalWrite(motdroit,LOW); } } void setup() { pinMode(motgauche, OUTPUT); pinMode(motdroit, OUTPUT); digitalWrite(photo1, HIGH); //pull up digitalWrite(photo2, HIGH); //pull up digitalWrite(photo3, HIGH); //pull up digitalWrite(photo4, HIGH); //pull up digitalWrite(photo5, HIGH); //pull up digitalWrite(photo6, HIGH); //pull up digitalWrite(photo7, HIGH); //pull up digitalWrite(photo8, HIGH); //pull up pciSetup(photo1); pciSetup(photo2); pciSetup(photo3); pciSetup(photo4); pciSetup(photo5); pciSetup(photo6); pciSetup(photo7); pciSetup(photo8); } void loop() { digitalWrite(motgauche,LOW); digitalWrite(motdroit,LOW); }