/*
Créé par ArduinoGetStarted.com
Cet exemple de code est dans le domaine public.
Page du tutoriel : https://arduinogetstarted.com/tutorials/arduino-button-library
Cet exemple lit l'état des 7 boutons avec anti-rebond et l'affiche sur le moniteur.
*/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
LiquidCrystal_I2C lcd2(0x26, 20, 4);
LiquidCrystal_I2C lcd3(0x25, 20, 4);
#include <ezButton.h>
const int BUTTON_NUM = 7;
ezButton redButton(2); // créer un objet ezButton qui s'attache à la broche 2
ezButton greenButton(3); // créer un objet ezButton qui s'attache à la broche 3
ezButton blueButton(4); // créer un objet ezButton qui s'attache à la broche 4
ezButton yellowButton(5); // créer un objet ezButton qui s'attache à la broche 5
ezButton blackButton(6); // créer un objet ezButton qui s'attache à la broche 6
ezButton whiteButton(7); // créer un objet ezButton qui s'attache à la broche 7
ezButton greyButton(8); // créer un objet ezButton qui s'attache à la broche 8
ezButton buttonArray[] = {ezButton(redButton),
ezButton(greenButton),
ezButton(blueButton),
ezButton(yellowButton),
ezButton(blackButton),
ezButton(whiteButton),
ezButton(greyButton)
};
String btn = "", btnState = "";
unsigned long count = 0;
int RedButton_State,
greenButton_State,
blueButton_State,
yellowButton_State,
blackButton_State,
whiteButton_State,
greyButton_State;
char* bouton[] = {" The Red button",
" The green Button",
" The blue Button",
"The yellow Button",
" The black Button",
" The white Button",
" The grey Button"
};
char* etat[] = {" is pressed ",
"is released "
};
void setup() {
lcd.init(); lcd.backlight();
lcd2.init(); lcd2.backlight();
lcd3.init(); lcd3.backlight();
for (int pin = 2; pin < 9; pin++)pinMode(pin, INPUT_PULLUP);
// définir le temps de rebond à 50 millisecondes à chaque bouton.
for (byte i = 0; i < BUTTON_NUM; i++) {
buttonArray[i].setDebounceTime(50); // set debounce time to 50 milliseconds
}
/*
redButton.setDebounceTime(50); // set debounce time to 50 milliseconds
greenButton.setDebounceTime(50); // set debounce time to 50 milliseconds
blueButton.setDebounceTime(50); // set debounce time to 50 milliseconds
yellowButton.setDebounceTime(50); // set debounce time to 50 milliseconds
blackButton.setDebounceTime(50); // set debounce time to 50 milliseconds
whiteButton.setDebounceTime(50); // set debounce time to 50 milliseconds
greyButton.setDebounceTime(50); // set debounce time to 50 milliseconds
*/
for (byte i = 0; i < BUTTON_NUM; i++) {
buttonArray[i].setCountMode(COUNT_FALLING); // set debounce time to 50 milliseconds
}
/*
redButton.setCountMode(COUNT_FALLING);
greenButton.setCountMode(COUNT_FALLING);
blueButton.setCountMode(COUNT_FALLING);
yellowButton.setCountMode(COUNT_FALLING);
blackButton.setCountMode(COUNT_FALLING);
whiteButton.setCountMode(COUNT_FALLING);
greyButton.setCountMode(COUNT_FALLING);
*/
}
void loop() {
checkAllButtons();
}
void checkAllButtons() {
// Appele la fonction loop() pour chaque bouton.
redButton.loop();
greenButton.loop();
blueButton.loop();
yellowButton.loop();
blackButton.loop();
whiteButton.loop();
greyButton.loop();
/*
// Vérifie en boucle l'état de chaque bouton.
RedButton_State = redButton.getState();
greenButton_State = greenButton.getState();
blueButton_State = blueButton.getState();
yellowButton_State = yellowButton.getState();
blackButton_State = blackButton.getState();
whiteButton_State = whiteButton.getState();
greyButton_State = greyButton.getState();
*/
// Si l'un des bouton est pressé
if (redButton.isPressed()) { // Si le bouton rouge est pressé
btn = bouton[0]; // indique le nom du bouton
btnState = etat[redButton.getState()]; // indique son état pressé
count = redButton.getCount(); // Compte le nombre de fois qu'il est pressé
}
if (redButton.isReleased()) { // Si le bouton rouge est relâché
btnState = etat[redButton.getState()];// indique son état relâché
}
if (greenButton.isPressed()) {// Si le bouton vert est pressé
btn = bouton[1]; // indique le nom du bouton
btnState = etat[greenButton.getState()];// indique son état pressé
count = greenButton.getCount(); // Compte le nombre de fois qu'il est pressé
}
if (greenButton.isReleased()) { // Si le bouton vert est relâché
btnState = etat[greenButton.getState()]; // indique son état
}
if (blueButton.isPressed()) {// Si le bouton bleu est pressé
btn = bouton[2]; // indique le nom du bouton
btnState = etat[blueButton.getState()]; // indique son état
count = blueButton.getCount();// Compte le nombre de fois qu'il est pressé
}
if (blueButton.isReleased()) { // Si le bouton bleu est relâché
btnState = etat[blueButton.getState()]; // indique son état
}
if (yellowButton.isPressed()) {// Si le bouton jaune est pressé
btn = bouton[3]; // indique le nom du bouton
btnState = etat[yellowButton.getState()]; // indique son état
count = yellowButton.getCount(); // Compte le nombre de fois qu'il est pressé
}
if (yellowButton.isReleased()) { // Si le bouton jaune est relâché
btnState = etat[yellowButton.getState()]; // indique son état
}
if (blackButton.isPressed()) {// Si le bouton noir est pressé
btn = bouton[4]; // indique le nom du bouton
btnState = etat[blackButton.getState()]; // indique son état
count = blackButton.getCount(); // Compte le nombre de fois qu'il est pressé
}
if (blackButton.isReleased()) { // Si le bouton gris est relâché
btnState = etat[blackButton.getState()]; // indique son état
}
if (whiteButton.isPressed()) {// Si le bouton blanc est pressé
btn = bouton[5]; // indique le nom du bouton
btnState = etat[whiteButton.getState()]; // indique son état
count = whiteButton.getCount(); // Compte le nombre de fois qu'il est pressé
}
if (whiteButton.isReleased()) { // Si le bouton blanc est relâché
btnState = etat[whiteButton.getState()]; // indique son état
}
if (greyButton.isPressed()) {// Si le bouton gris est pressé
btn = bouton[6]; // indique le nom du bouton
btnState = etat[greyButton.getState()]; // indique son état
count = greyButton.getCount();// Compte le nombre de fois qu'il est pressé
}
if (greyButton.isReleased()) { // Si le bouton gris est relâché
btnState = etat[greyButton.getState()]; // indique son état
}
// affiche les actions pour chaque bouton
displayActionBtns();
}
void displayActionBtns() {
char btnCount[3]; // affiche le nombre de fois qu'un bouton a été pressé
sprintf(btnCount, "%3d time(s)", count); // formate l'affichage
lcdPrintCenter(btn, 0); // affiche le nom du bouton
lcdPrintCenter(btnState, 1); // affiche si l'état du bouton pressé ou relâché
lcdPrintCenter(btnCount, 2); // affiche le nombre de fois qu'un bouton a été pressé
char infoCount[20];
sprintf(infoCount, "Le bouton rouge: %2dX", redButton.getCount());
lcd2_print(0, 0, infoCount);
sprintf(infoCount, "Le bouton vert: %2dX", greenButton.getCount());
lcd2_print(0, 1, infoCount);
sprintf(infoCount, "Le bouton bleu: %2dX", blueButton.getCount());
lcd2_print(0, 2, infoCount);
sprintf(infoCount, "Le bouton jaune: %2dX", yellowButton.getCount());
lcd2_print(0, 3, infoCount);
sprintf(infoCount, "Le bouton noir: %2dX", blackButton.getCount());
lcd3_print(0, 0, infoCount);
sprintf(infoCount, "Le bouton blanc: %2dX", whiteButton.getCount());
lcd3_print(0, 1, infoCount);
sprintf(infoCount, "Le bouton gris: %2dX", greyButton.getCount());
lcd3_print(0, 2, infoCount);
}
void lcd2_print(int x, int y, String message) {
lcd2.setCursor(x, y); lcd2.print(message);
}
void lcd3_print(int x, int y, String message) {
lcd3.setCursor(x, y); lcd3.print(message);
}
// fonction pour centrer le texte à afficher sur lcd.============
void lcdPrintCenter(String text, int ligne) {
int len = text.length();// longeur de la variable text
// positionne le curseur au centre de la ligne choisie et
// soustrait la longeur du text à afficher
lcd.setCursor((20 - len) / 2, ligne);
lcd.print(text); // affiche le text centré
}
// fonction pour centrer le texte à afficher sur lcd2.============
void lcd2PrintCenter(String text, int ligne) {
int len = text.length();// longeur de la variable text
// positionne le curseur au centre de la ligne choisie et
// soustrait la longeur du text à afficher
lcd2.setCursor((20 - len) / 2, ligne);
lcd2.print(text); // affiche le text centré
}
// fonction pour centrer le texte à afficher sur lcd3.============
void lcd3PrintCenter(String text, int ligne) {
int len = text.length();// longeur de la variable text
// positionne le curseur au centre de la ligne choisie et
// soustrait la longeur du text à afficher
lcd3.setCursor((20 - len) / 2, ligne);
lcd3.print(text); // affiche le text centré
}