Détection du changement d'état ( front montant) d'un bouton poussoir (sans faire d'interruption)


Principe :

    1. Comparer l'état actuel du BP avec son état précédent.
    2. Si l'état du bouton poussoir a changé ET est passé à 1, on a donc un front montant.



Exemple de programme de détection d'un front montant sur un bouton poussoir


int bpPin = 3;

int ledPin = 2;

int bp1 = 0;            // variable pour l'état actuel du bouton poussoir

int bp1Mem = 0;         // variable pour l'état précédent du bouton poussoir

int ledOn = 0;          // variable pour l'état de la led



void setup() {

  pinMode(ledPin,OUTPUT);

  pinMode(bpPin,INPUT);

}



void loop() {

  // lit l'état actuel du bouton poussoir

  bp1 = digitalRead(bpPin);

 

  // compare l'état actuel du bouton poussoir à l'état précédent mémorisé

  if (bp1 != bp1Mem){

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

    bp1Mem = bp1;

   

    // si ce nouvel état est passé à 1, on a donc un front montant.

    if (bp1 == 1) {

      //On change l'état de la variable de la led de 1 à 0 ou de 0 à 1

      ledOn = !ledOn;

    }

  }

 

  if (ledOn == 1) {

    digitalWrite(ledPin,HIGH);

  }

  else {

    digitalWrite(ledPin,LOW);

  }

     

}
















Créé avec HelpNDoc Personal Edition: Créer des documents d'aide facilement