======== Bouton poussoir en interrupteur sans clignotement ======== [[https://www.tinkercad.com/things/i88z7oI6mJI-boutoninterrupteursansclignotement/editel?sharecode=X4bVnO5QV8NhO0-UJs09Ysq2YP1wROGkg5U2ILfU9hw|{{ :start:arduino:bp_inter_sans_clignote.jpeg?400 |}}]] [[https://www.tinkercad.com/things/i88z7oI6mJI-boutoninterrupteursansclignotement/editel?sharecode=X4bVnO5QV8NhO0-UJs09Ysq2YP1wROGkg5U2ILfU9hw|{{ :start:arduino:schema_bp_led.jpeg?direct&600 |}}]] ==== Code Arduino ==== const int Led1= 2; const int Bp1 =3; int MemLed1 =0; int MemBp1 =0; int tempo =50; void DebugVar(int nb) { Serial.print("temps = ");Serial.println(nb); Serial.print("Bp1 =");Serial.println(digitalRead(Bp1)); Serial.print("MemBp1 =");Serial.println(MemBp1); Serial.print("MemLed1 =");Serial.println(MemLed1); delay(250); } void setup() { Serial.begin(9600); pinMode(Led1, OUTPUT); pinMode(Bp1, INPUT); digitalWrite(Led1, LOW); //DebugVar(10); } void loop() { int valeurBp1 = digitalRead(Bp1);// On lit la valeur de Bp1 au début de la boucle delay(tempo); /* //Temps 0 if (valeurBp1 == 0 && MemBp1 ==0 && MemLed1 == 0) {// etat present digitalWrite(Led1, LOW);MemBp1 =0;MemLed1 = 0; // Etat futur //delay(tempo);DebugVar(0); } */ //Temps 1 if (valeurBp1 == 1 && MemBp1 ==0 && MemLed1 == 0) { digitalWrite(Led1, HIGH);MemBp1 =1;MemLed1 = 1; //delay(tempo);DebugVar(1); } //Temps 2 if (valeurBp1 == 0 && MemBp1 ==1 && MemLed1 == 1) { digitalWrite(Led1, HIGH);MemBp1 =0;MemLed1 = 1; //delay(tempo);DebugVar(2); } //Temps 3 if (valeurBp1 == 1 && MemBp1 ==0 && MemLed1 == 1) { digitalWrite(Led1, LOW);MemBp1 =1;MemLed1 = 0; //delay(tempo);DebugVar(3); } //Temps 4 if (valeurBp1 == 0 && MemBp1 ==1 && MemLed1 == 0) { digitalWrite(Led1, LOW);MemBp1 =0;MemLed1 = 0; //delay(tempo);DebugVar(4); } } ==== Diagramme BP sans clignotement ==== {{ :start:arduino:capture_d_ecran_du_2022-05-10_09-09-01.png?direct&600 |}} ==== Explication Diagramme BP ==== __Explications diagramme bouton poussoir en interrupteur sans clignotement__ Le bouton poussoir est cablé avec un pullup à GND ( plus facile à comprendre ...) Le bouton poussoir est actif quand on envoie un + 5V ( 1 ) sur la broche D3 de l'arduino **T0** : le bp1 est inactif = 0 , tous le reste est à 0. **T1** : le Bp1 est actif = 1 => La memoire du Bp1 est à 0 ( voir BP1 T0), Led1 devient allumée = 1 ( 1er front montant de Bp1), la memoire de la Led1 est = 0 ( voir Led1 T0). **T2** : le Bp1 est inactif = 0 => La memoire du Bp1 est à 1 ( voir Bp1 T1), Led1 reste allumée = 1 ( c'est le but) , la memoire de la Led1 est = 1 ( voir Led1 T1). **T3** : le Bp1 est actif = 1 => La memoire du Bp1 est à 0 ( voir Bp1 T2), Led1 est eteinte = 0 ( 2eime fronts montant de Bp1) , la memoire de la Led1 est = 1 ( voir Led1 T2). **T4** : le Bp1 est inactif = 0 => La memoire du Bp1 est à 1 ( voir Bp1 T3), Led1 est eteinte = 0 ( Le Led1 doit rester eteinte) , la memoire de la Led1 est = 0 ( voir Led1 T3). On revient à T0