60 lines
No EOL
1.2 KiB
C++
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;
|
|
}; |