Pb compréhension moment d'envoi sur le terminal

Bonjour,

un petit code tout bête : afficher le nombre d’appuis sur un bouton poussoir en pull-up.

Ce que je ne comprends pas, c’est pourquoi le message est affiché sur le terminal au moment où je relâche le bouton et non au moment où j’appuie dessus… Pourtant la commande Serial.print est bien traité quand la réponse au test “etat_bouton != last_etat_bouton && etat_bouton” est vraie, c’est-à-dire quand le bouton est appuyé…

Merci pour toute aide.

Eddie

/*  bouton-poussoir montage pull-un interne
 *  affiche le nombre d'appuis sur le bouton */

const int pin_bouton = 2;                               // le numéro de port est une constante, non modifiable
int compteur_appuis = 0;                                // compteur entier
boolean etat_bouton;                                    // variable booléenne à deux états
boolean last_etat_bouton = LOW;                         // variable booléenne à deux états initialisée à LOW (0)

void setup() {
  pinMode(pin_bouton,INPUT_PULLUP);                     // port D2 déclaré en entrée avec résistance de tirage interne
  Serial.begin(9600);
}

void loop() {
  etat_bouton = digitalRead(pin_bouton);                // lecture de l'état du bouton
  if (etat_bouton != last_etat_bouton && etat_bouton){
    compteur_appuis++;                                  // incrémentation du compteur
    Serial.print("nombre d'appuis : ");
    Serial.println(compteur_appuis);
  }
  last_etat_bouton = etat_bouton;                       // mise en mémoire de l'état actuel
}

Bonjour,

Si tu utilises INPUT_PULLUP, l'état du bouton est LOW quand tu appuies dessus.
Si tu veux raisonner en logique positive, inverses l'état du bouton

  etat_bouton = !digitalRead(pin_bouton);                // lecture de l'état du bouton

Pfff, je me suis mélangé entre le montage pull-up et le pull-down...
Merci beaucoup !