// Solution du laboratoire: DOC11.3.5
#include <LiquidCrystal_I2C.h>
#define POT A0
#define LCD_POSITION_POT 10
#define QUATRE_ESPACES " "
#define DEUX_ESPACES " "
#define LCD_POSITION_VOLUME 10
#define LCD_LIGNE_NO_1 0
#define LCD_LIGNE_NO_2 1
#define LCD_DEBUT_LIGNE 0
#define LCD_NB_LIGNE 2
#define LCD_NB_COLONNE 16
#define DELAI_MSG_OUVERTURE 3000
#define LCD_ADRESSE_I2C 0x27
#define NOM_PROJET "Labo DOC11.3.5"
#define VERSION_PROJET "Version 1.0b"
#define DELAI_VERSION_WOKWI 200
LiquidCrystal_I2C ecranLCD(LCD_ADRESSE_I2C,LCD_NB_COLONNE,LCD_NB_LIGNE);
char msg[17];
void setup() {
ecranLCD.begin(LCD_NB_COLONNE, LCD_NB_LIGNE);
ecranLCD.print(NOM_PROJET);
ecranLCD.setCursor(LCD_DEBUT_LIGNE, LCD_LIGNE_NO_2);
sprintf(msg, "%s", VERSION_PROJET);
ecranLCD.print(msg);
delay(DELAI_MSG_OUVERTURE);
ecranLCD.clear();
ecranLCD.print("Val. Pot: ");
ecranLCD.setCursor(LCD_DEBUT_LIGNE, LCD_LIGNE_NO_2);
ecranLCD.print("Volume : ");
} // setup()
void loop() {
int valeurPot = analogRead(POT);
// Effacer l'ancienne valeur du POT
ecranLCD.setCursor(LCD_POSITION_POT , LCD_LIGNE_NO_1 );
ecranLCD.print(QUATRE_ESPACES);
// Afficher la valeur du POT
ecranLCD.setCursor(LCD_POSITION_POT , LCD_LIGNE_NO_1 );
ecranLCD.print(valeurPot);
// Effacer l'ancienne valeur du volume
ecranLCD.setCursor(LCD_POSITION_VOLUME , LCD_LIGNE_NO_2 );
ecranLCD.print(DEUX_ESPACES);
// Afficher la valeur du volume
ecranLCD.setCursor(LCD_POSITION_VOLUME , LCD_LIGNE_NO_2 );
ecranLCD.print(map(valeurPot, 0, 1023 , 0, 10));
delay(DELAI_VERSION_WOKWI);
} // loop()