#include <OneButton.h> // inclure la bibliothèque OneButton
constexpr byte pinBP = 10; // pin du bouton (D10)
constexpr byte pinLedVerte = 9; // pin de la LED verte - correspondant au clic simple
constexpr byte pinLedRouge = 8; // pin de la LED rouge - correspondant au double clic
constexpr byte pinLedBleue = 7; // pin de la LED bleue - correspondant au clic long
OneButton bouton; // créer une instance (un "objet") bouton.
void simpleClic()
{
// dans cette fonction (clic simple), on allume la LED verte
static bool ledVerteAllumee = false; // on définit la variable état de la LED et sa valeur initiale (0 car false = faux)
ledVerteAllumee =! ledVerteAllumee; // on inverse l'état de la variable de l'état de la LED
digitalWrite(pinLedVerte, ledVerteAllumee ? HIGH : LOW);
// On éteint les autres LEDs
digitalWrite(pinLedRouge, LOW);
digitalWrite(pinLedBleue, LOW);
}
void doubleClic()
{
// dans cette fonction (double clic), on allume la LED rouge
static bool etatLedRouge = 0; // on définit la variable état de la LED
etatLedRouge =! etatLedRouge; // on inverse l'état de la variable de l'état de la LED
digitalWrite(pinLedRouge, etatLedRouge ? HIGH : LOW); // on rentre cette variable comme paramètre pour la LED
// On éteint les autres LEDs
digitalWrite(pinLedVerte, LOW);
digitalWrite(pinLedBleue, LOW);
}
void clicLong()
{
// dans cette fonction (clic long), on allume la LED bleue
static bool ledBleueAllumee = false; // on définit la variable état de la LED et sa valeur initiale
ledBleueAllumee =! ledBleueAllumee; // on inverse l'état de la variable de l'état de la LED
digitalWrite(pinLedBleue, ledBleueAllumee ? HIGH : LOW); // on utilise cette variable comme paramètre pour la LED
// On éteint les autres LEDs
digitalWrite(pinLedVerte, LOW);
digitalWrite(pinLedRouge, LOW);
}
void setup()
{
bouton.setup(pinBP, INPUT_PULLUP, true); // on paramètre le bouton avec sa pin, etc...
bouton.attachClick(simpleClic); // fonction appelée en cas de clic
bouton.attachDoubleClick(doubleClic); // fonction appelée en cas de double clic
bouton.attachLongPressStop(clicLong); // fonction appelée au moment ou le BP est relâché après un appui long
}
void loop()
{
bouton.tick(); // on lit en permanence le bouton connecté à la pin D10
}