Compteur + - avec deux boutons

Bonjour tout le monde !
Je tente de réaliser un compteur qui ajoute et enlève 1 au compteur à chaque appui sur le bouton respectif (j’ai donc aux totaux deux boutons).
Et donner le résultat sur un écran lcd.
Donc normalement lorsque j’appuie sur le “+”, ça ajoute 1 au compteur, et si j’appuie sur lé “-”, ça en enlève 1.
Le problème étant que je ne comprends pas vraiment comment cela ce fait-il que lorsque j’appuie sur le bouton “+”, ça ne prend pas en compte que 1 clic, comme je l’ai fait avec le “-”.

Bon, j’espère bien vous avoir expliqué la situation, voila le code :

#include <Wire.h>                         //Librairies obligatoire
#include "rgb_lcd.h"                      //Librairie de l'écran

rgb_lcd lcd;                              //Obligatoire aussi

int pinMoins = 8;                         //Déclaration des variables globales
int pinPlus = 7;
int compteur = 0;
int drapeau1;
int drapeau;
int test = 0;

void setup()
{
  pinMode(pinPlus, INPUT_PULLUP);         //Déclare pinPlus et pinMoins comme entrées pullup
  pinMode(pinMoins, INPUT_PULLUP);
  lcd.begin(16, 2);                       //Défini l'écran faisant 16 sur 2
  lcd.setRGB (255, 0 , 255);              //Met l'écran en violet (rouge + bleu)
  lcd.print(0);                           //Affiche un 0 sur l'écran
}

void loop()
{
  int capteurPlus = digitalRead (pinPlus);//Les valeurs de la pinPlus sont mit dans capteurPlus
  int capteurMoins = digitalRead (pinMoins);//Les valeurs de la pinMoins sont mit dans capteurMoins


  if (capteurPlus == 0 || capteurMoins == 0 && drapeau == 0) {
    lcd.clear();
    if (capteurPlus == 0) {
      compteur++;
      
    }
    if (capteurMoins == 0) {
      compteur--;
      
    }
    test = 1;
    drapeau = 1;
  }

  if (((capteurPlus == 1 || capteurMoins == 0) && (capteurPlus == 0 || capteurMoins == 1) && (capteurPlus == 1 && capteurMoins == 1)) && drapeau == 1) //Y'a surement une merde sur cette ligne, mais je comprend pas pourqoi
    drapeau = 0;

  if (test == 1) {                        //Permet d'afficher le compteur qu'un seule fois
    lcd.print(compteur);
    test = 0;
  }
}

Merci d’avance pour vos réponses :slight_smile:

Benoitded: if (((capteurPlus == 1 || capteurMoins == 0) && (capteurPlus == 0 || capteurMoins == 1) && (capteurPlus == 1 && capteurMoins == 1)) && drapeau == 1) //Y'a surement une merde sur cette ligne, mais je comprend pas pourqoi

(capteurPlus == 1 || capteurMoins == 0) && (capteurPlus == 0 || capteurMoins == 1)

Il faut donc que chaque capteur vaille à la fois 0 et 1 pour remplir cette condition.

La gestion d’un bouton n’est pas aussi simple que ca en a l’air, surtout si tu veux en gérer deux à la fois.
J’ai rédigé ce tuto qui te sera certainement très utile.

Surtout, ce que je ne comprend pas c'est que ça fonctionne avec le bouton qui enlève 1, mais pas avec celui qui en ajoute 1 :/

Lis le tuto que je t'ai indiqué : il y a beaucoup plus à comprendre que cela...