#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Adresse de l'écran LCD I2C. Vous devrez peut-être ajuster cela selon votre écran.
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Les broches des boutons
const int buttonPins[] = {2, 3, 4, 5};
bool buttonStates[] = {HIGH, HIGH, HIGH, HIGH}; // Pour suivre l'état actuel des boutons
bool lastButtonStates[] = {HIGH, HIGH, HIGH, HIGH}; // Pour suivre l'état précédent des boutons
void setup() {
// Initialiser la communication série pour le débogage
Serial.begin(9600);
// Configurer les broches des boutons comme entrées avec pull-up interne
for (int i = 0; i < 4; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
// Initialiser l'écran LCD
lcd.begin(16, 2); // Spécifiez le nombre de colonnes et de lignes de l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran
lcd.clear();
lcd.print("Appuyez sur un bouton");
}
void loop() {
for (int i = 0; i < 4; i++) {
bool buttonPressed = digitalRead(buttonPins[i]) == LOW; // LOW signifie que le bouton est pressé
// Vérifier si l'état du bouton a changé
if (buttonPressed != lastButtonStates[i]) {
// Mettre à jour l'état actuel du bouton
lastButtonStates[i] = buttonPressed;
// Débogage : imprimer l'état du bouton
Serial.print("Bouton ");
Serial.print(i + 1);
Serial.print(": ");
Serial.println(buttonPressed ? "Presse" : "Relâché");
// Si le bouton est pressé, afficher le message correspondant
if (buttonPressed) {
lcd.clear();
lcd.print("Bouton ");
lcd.print(i + 1);
lcd.print(": OK");
delay(0); // Affiche "OK" pendant 1 seconde
lcd.clear();
lcd.print("Appuyez sur un bouton");
}
}
}
// Ajouter un petit délai pour éviter un débordement du processeur
delay(50);
}