toto/BE c/projet/bouton.cpp
Montaigu-Lancelin Emilie 9646d260cb version finale
2026-01-15 13:51:09 +01:00

60 lines
No EOL
1.2 KiB
C++

#include "bouton.h"
#include "rgb_lcd.h"
//Constructeur
bouton::bouton()
: capteur(), etat(0) {}
bouton::bouton(int pin)
: capteur(pin), etat(0) {}
//Accesseur de etat
bool bouton::lire_etat() {
int buttonState = digitalRead(this->getpin());
if (buttonState == HIGH) {
this->etat = 1; // Met à jour etat
} else {
this->etat = 0; // Met à jour etat
}
return this->etat;
}
// Redéfinition de l'opérateur
bool bouton::operator!() const {
return this->etat == 0;
}
bool choix_bouton(bouton &Brelief, bouton &Bplat) {
//Attends que les 2 bouttons soient relachés
while (!(!Brelief) || !(!Bplat)) {
Brelief.lire_etat();
Bplat.lire_etat();
delay(10);
}
//Attends que l'un des boutons soit appuyé
while (!Brelief && !Bplat) {
Brelief.lire_etat();
Bplat.lire_etat();
delay(10);
}
//Stocke l'état des boutons
bool reliefPresse = Brelief.lire_etat();
bool platPresse = Bplat.lire_etat();
//Boucle qui renvoie 1 si bouton relief et renvoie 0 si bouton plat
if (reliefPresse) {
while (Brelief.lire_etat() == 1) {
delay(10);
}
return 1;
} else if (platPresse) {
while (Bplat.lire_etat() == 1) {
delay(10);
}
return 0;
}
return 0;
};