// Détection du front montant. Commande type télérupteur.

#define led 23
#define bp 2


boolean ledetat = LOW;
boolean bpmem = LOW;
boolean bpetat = LOW;


void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  pinMode(led, OUTPUT);
  pinMode(bp, INPUT_PULLUP);
}


void loop() 
{
 // lit l'état actuel du bouton poussoir actif à zéro
 bpetat = !digitalRead(bp);
 // compare l'état actuel du bouton poussoir à l'état précédent mémorisé
 if (bpetat != bpmem)
  {
    // si l'état du bouton poussoir a changé
    // on mémorise l'état courant du bouton poussoir pour les prochains passages dans la boucle loop
    bpmem = bpetat;
    // si ce nouvel état est passé à 1, on a donc un front montant.
    if (bpetat ==HIGH ) 
      {
        //On change l'état de la variable de la led de 1 à 0 ou de 0 à 1
        ledetat = !ledetat;
      }
  }
 if (ledetat)
  {
    digitalWrite(led,HIGH);
  }
  else 
  {
    digitalWrite(led,LOW);
  }
 delay(10); 
}