#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int btn_Heure = 2, btn_Minute = 3, btn_Seconde = 4, btn_StartStop = 5;
bool etat_btn_Heure, etat_btn_Minute, etat_btn_Seconde, etat_btn_StartStop;
// déclare 8 tableaux de caractères spéciaux.
uint8_t bell[8] = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
uint8_t note[8] = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
uint8_t duck[8] = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
uint8_t check[8] = {0x0, 0x1, 0x3, 0x16, 0x1c, 0x8, 0x0};
uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
uint8_t retarrow[8] = { 0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4};
// déclare 1 tableau contenant le nom des 8 caractères spéciaux
String name[] = {"bell ",
"note ",
"clock",
"heart",
"duck ",
"check",
"cross",
"retarrow"
};
String btn[] = {"hre min sec start"};
void setup() {
lcd.init(); lcd.backlight(); // Initailise lcd.
//Assigne le mode INPUT_PULLUP aux 4 boutons poussoirs.
for (int pin = 2; pin < 6; pin++) pinMode(pin, INPUT_PULLUP);
// Créer 8 caractères spéciaux pour lcd.
lcd.createChar(0, bell);
lcd.createChar(1, note);
lcd.createChar(2, clock);
lcd.createChar(3, heart);
lcd.createChar(4, duck);
lcd.createChar(5, check);
lcd.createChar(6, cross);
lcd.createChar(7, retarrow);
lcd.home();
// Affiche les 8 caractères spéciaux à intervale de 3 secondes.
for (int i = 0; i < 8; i++ ) {
lcdPrintCenter("Caractere index: " + String(i), 0);
lcd.setCursor(0, 2); // positionne le curseur.
lcd.write(i); // affiche le caractère correspondant à i.
lcd.print(" " + name[i]);
delay(1000); // intervale de 3 secondes
}
//delay(3000);
lcd.clear();
lcdPrintCenter("Press any button...", 0);
}
void loop() {
etat_btn_Heure = digitalRead(btn_Heure);
etat_btn_Minute = digitalRead(btn_Minute);
etat_btn_Seconde = digitalRead(btn_Seconde);
etat_btn_StartStop = digitalRead(btn_StartStop);
lcdPrintCenter(btn[0], 3);
//si(etat_btn_Heure == LOW) { exécute le code... }
if (!etat_btn_Heure) { //Si btn_Heure est pressé.
lcd.clear();
lcdPrintCenter("Bouton Heure", 1);
}
if (!etat_btn_Minute) {
lcd.clear();
lcdPrintCenter("Bouton Minute", 2);
}
if (!etat_btn_Seconde) {
lcd.clear();
lcdPrintCenter("Bouton Seconde", 1);
}
if (!etat_btn_StartStop) {
lcd.clear();
lcdPrintCenter("Bouton Start/Stop", 2);
}
delay(200);
}
// fonction perso pour centrer le texte à afficher sur lcd.
void lcdPrintCenter(String text, int ligne) {
int len = text.length(); // défini la longeur de la variable text
lcd.setCursor((20 - len) / 2, ligne); // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
lcd.print(text); // affiche le text centré
}