======== 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 ====

<code c BPsansClig.ino>

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);
  }
  
}
</code>

==== 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