#include <LiquidCrystal_I2C.h>  // Inclusion de la bibliothèque LiquidCrystal_I2C

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Initialisation de l'écran LCD avec l'adresse I2C, 16 colonnes et 2 lignes
const int ledPinR = 5;  // Broche pour la première LED (Rouge)
const int ledPinY = 4;  // Broche pour la deuxième LED (Jaune)
const int ledPinG = 3;  // Broche pour la troisième LED (Verte)

void setup() {
  pinMode(ledPinR, OUTPUT);  // Configuration de la broche comme une sortie
  pinMode(ledPinY, OUTPUT);  // Configuration de la broche comme une sortie
  pinMode(ledPinG, OUTPUT);  // Configuration de la broche comme une sortie
  
  digitalWrite(ledPinR, LOW);  // Initialisation de l'état bas (LED éteinte)
  digitalWrite(ledPinY, LOW);  // Initialisation de l'état bas (LED éteinte)
  digitalWrite(ledPinG, LOW);  // Initialisation de l'état bas (LED éteinte)
  
  lcd.init();  // Initialisation de l'écran LCD
  lcd.backlight();  // Activation du rétroéclairage de l'écran LCD
  
  lcd.setCursor(0, 0);  // Positionnement du curseur à la colonne 0, ligne 0
  lcd.print("School Sur Seine!");  // Affichage du texte "School Sur Seine!"
  
  lcd.setCursor(7, 1);  // Positionnement du curseur à la colonne 7, ligne 1
  lcd.print(":)");  // Affichage du symbole ":)"
  
  delay(5000);  // Attente de 5 secondes
  
  lcd.clear();  // Effacement de l'écran LCD
}

void loop() {
  int value = analogRead(A0);  // Lecture de la valeur analogique à partir de la broche A0
  lcd.setCursor(0, 0);  // Positionnement du curseur à la colonne 0, ligne 0
  lcd.print("Value :");  // Affichage du texte "Value :"
  lcd.print(value);  // Affichage de la valeur lue
  lcd.print("    ");  // Affichage d'espaces vides pour effacer les caractères précédents
  lcd.setCursor(0, 1);  // Positionnement du curseur à la colonne 0, ligne 1
  lcd.print("Level :");  // Affichage du texte "Level :"
  
  if (value < 100) {
    lcd.print("No water ");  // Affichage du texte "No water"
    
    digitalWrite(ledPinR, LOW);  // LED Rouge éteinte
    digitalWrite(ledPinY, LOW);  // LED Jaune éteinte
    digitalWrite(ledPinG, LOW);  // LED Verte éteinte
  } else if (value >= 10 && value < 630) {
    lcd.print("Low     ");  // Affichage du texte "Low"
    
    digitalWrite(ledPinR, HIGH);  // LED Rouge allumée
    digitalWrite(ledPinY, LOW);  // LED Jaune éteinte
    digitalWrite(ledPinG, LOW);  // LED Verte éteinte
  } else if (value >= 630 && value < 670) {
    lcd.print("Medium  ");  // Affichage du texte "Medium"
    
    digitalWrite(ledPinY, HIGH);  // LED Jaune allumée
    digitalWrite(ledPinR, LOW);  // LED Rouge éteinte
    digitalWrite(ledPinG, LOW);  // LED Verte éteinte
  } else if (value >= 670) {
    lcd.print("High    ");  // Affichage du texte "High"
    
    digitalWrite(ledPinG, HIGH);  // LED Verte allumée
    digitalWrite(ledPinR, LOW);  // LED Rouge éteinte
    digitalWrite(ledPinY, LOW);  // LED Jaune éteinte
  }
}
