//ARDUINO81 modifier la valeur d'une variable depuis l'écran LCD avec 2 boutons poussoirs
//Vidéo explicative sur Youtube https://youtu.be/41o31C_RiS0
#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int Broche_BP_HAUT = 6;
const int Broche_BP_BAS = 7;
const int Broche_LED = 8;

int Consigne = 15;

int Etat_BP_HAUT = 0;
int Etat_Precedent_BP_HAUT = 0;
int Etat_BP_BAS = 0;
int Etat_Precedent_BP_BAS = 0;

int Reglage = 0;
int Tempo = 5000;
int Tempo2 = 10000;

unsigned long Temps_Actuel;
unsigned long Temps_Precedent = 0;
unsigned long Temps_Precedent2 = 0;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(Broche_BP_HAUT, INPUT);
  pinMode(Broche_BP_BAS, INPUT);
  pinMode(Broche_LED, OUTPUT);
}

void loop() {
  Temps_Actuel = millis();
  digitalWrite (Broche_LED, HIGH);
  Etat_BP_HAUT = digitalRead(Broche_BP_HAUT);
  Etat_BP_BAS = digitalRead(Broche_BP_BAS);
  Serial.print("Tps_Actuel :");  Serial.print(Temps_Actuel);
  Serial.print(" Tps_Precedent :");   Serial.print(Temps_Precedent);
  Serial.print(" Etat_BP_HAUT :");   Serial.print(Etat_BP_HAUT);
  Serial.print(" Etat_BP_BAS :");   Serial.print(Etat_BP_BAS);
  Serial.print(" Reglage :");   Serial.print(Reglage);
  Serial.print(" Consigne :");  Serial.println (Consigne);

  //lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("consigne ");
  lcd.setCursor(12, 0);
  lcd.print(Consigne);


  if ((Etat_BP_HAUT == 1) && (Etat_BP_BAS == 1) && (Temps_Actuel - Temps_Precedent >= Tempo)) {
    Temps_Precedent = Temps_Actuel;
    Temps_Precedent2 = Temps_Actuel;
    Reglage = 1;
    while (Reglage == 1) {
      Serial.print(" dans le while ");
      if ( digitalRead(Broche_BP_HAUT) == HIGH) {
        Consigne++;
      }
      if ( digitalRead(Broche_BP_BAS) == HIGH) {
        Consigne--;
      }
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("consigne ");
      lcd.setCursor(12, 0);
      lcd.print(Consigne);
      lcd.setCursor(0, 1);
      lcd.print("Reglage ");
      Serial.print(" Consigne :");  Serial.println (Consigne);
      Temps_Actuel = millis();

      Serial.print("Tps_Actuel :");  Serial.print(Temps_Actuel); Serial.print(" Tps_Precedent2 :");   Serial.print(Temps_Precedent2);

      if (Temps_Actuel - Temps_Precedent2 >= Tempo2) {
        Reglage = 0;
        lcd.clear();
        break;
      }
    }
    Temps_Precedent = Temps_Actuel;
    Temps_Precedent2 = Temps_Actuel;
  }
}