/*
Fichier: bouton-permutation.ino
Auteur: Alain Boudreault
Date: 2021.09.17
--------------------------------------------------------------------------
Description: Exemple d'un projet qui tient compte de l'état précédent
du bouton momentané.
L'application allume la DEL à la première utilisation
du bouton puis l'éteint à la suivante ...
--------------------------------------------------------------------------
M-A-J: 2022.09.12 - Ajout de code pour le relâchement du bouton.
Gestion du bruit du bouton
--------------------------------------------------------------------------
*/
// -----------------------------
// Les Macros
#define ON HIGH
#define OFF LOW
#define BROCHE_BOUTON 4
#define BROCHE_DEL 3
#define OUI true
#define NON false
// -----------------------------
// Les variables globales
bool etatDuBoutonAChange = NON;
bool etatDeLaDEL = OFF; // État courant de la DEL (ON/OFF)
// -----------------------------
void setup()
{
pinMode(BROCHE_BOUTON, INPUT);
pinMode(BROCHE_DEL, OUTPUT);
}
// -----------------------------
void loop()
{
if (digitalRead(BROCHE_BOUTON)) // Lire le bouton
{
if (etatDuBoutonAChange == OUI) // Si l'état du bouton a changé alors
{
etatDuBoutonAChange = NON; // Réinitialiser l'état du bouton
etatDeLaDEL = !etatDeLaDEL; // Inverser l'état de la DEL (ON/OFF)
}
while(digitalRead(BROCHE_BOUTON)); // Attendre le relâchement du bouton
delay(50); // Éliminer le bruit du bouton.
}
else etatDuBoutonAChange = OUI; // Sinon, indiquer que l'état du bouton a changé
// Allumer ou éteindre la DEL
digitalWrite(BROCHE_DEL, etatDeLaDEL);
} // loop()