const int vert = 10; // Broche 10 pour le voyant vert const int orange = 11;// Broche 11 pour le voyant orange const int rouge = 12;// Broche 12 pour le voyant rouge const int BP1_Pietons = 2;// Broche 2 pour le Bouton pietons const int RougePietons = 9;// Broche 9 pour le voyant Rouge Pietons const int VertePietons = 8;// Broche 8 pour le voyant Vert Pietons const int delais1s = 1000;// Defini un delai de 1 s ==> 1000 millisecondes const int delais3s = 3000;// Defini un delai de 3 s ==> 3000 millisecondes const int delais5s = 5000;// Defini un delai de 5 s ==> 5000 millisecondes volatile int etatBP1 = LOW; void setup() { pinMode(vert, OUTPUT); // Definit les broches des Voyants en sortie pinMode(orange, OUTPUT); pinMode(rouge, OUTPUT); pinMode(RougePietons, OUTPUT); pinMode(VertePietons, OUTPUT); pinMode(BP1_Pietons, INPUT);// Definit la broche Bouton pietons en entrée digitalWrite(vert, LOW);// Initialise tous les voyants eteint pour demmarrer digitalWrite(orange, LOW); digitalWrite(rouge, LOW); digitalWrite(VertePietons, LOW); digitalWrite(RougePietons, LOW); attachInterrupt(0, memoireBP, CHANGE); } void memoireBP(){ etatBP1 = 1; } void loop() { digitalWrite(VertePietons, LOW); // eteint le voyant vert pietons digitalWrite(RougePietons, HIGH); // allume le voyant rouge pietons digitalWrite(vert, HIGH);// allume le voyant vert voiture delay(delais3s);// pendant 3 secondes digitalWrite(vert, LOW);// eteint le voyant vert voiture // if (digitalRead(BP1_Pietons) == 1 ){ // test si le bouton pietons est appuyé pendant que le voyant vert voiture est allumé if (etatBP1 == 1){ digitalWrite(orange, HIGH); // si OUI fait la sequence pietons --> orange voiture allumé delay(delais1s);// pendant 1 seconde digitalWrite(orange, LOW);// voyant orange voiture eteint digitalWrite(rouge, HIGH);// voyant rouge voiture allumé digitalWrite(RougePietons,LOW);// voyant rouge pietons eteint digitalWrite(VertePietons,HIGH);// voyant vert pietons allumé delay(delais5s); // pendant 5 secondes digitalWrite(VertePietons, LOW); // eteint voyant vert pietons digitalWrite(RougePietons, HIGH);// allume voyant rouge pietons digitalWrite(rouge, LOW); // voyant rouge voiture eteint etatBP1 = 0; } // et l'on recommence la boucle au debut else { // si NON = Bouton pietons non appuyé pendant le voyant vert voiture allumé digitalWrite(orange, HIGH);// sequence normale des feux voiture --> Orange voiture allumé delay(delais1s);// pendant 1 seconde digitalWrite(orange, LOW);// voyant orange voiture eteint digitalWrite(rouge, HIGH);// voyant rouge voiture allumé delay(delais3s);// pendant 3 secondes digitalWrite(rouge, LOW); // voyant rouge voiture eteint } // et l'on recommence la boucle au debut }