#include <LiquidCrystal.h> //LCD kijelző vezérlő meghívása

LiquidCrystal lcd(11, 12, 2, 3, 4, 5); //LCD kijelző inicializálása (kivezetések beállítása melyik hova csatlakozik az arduinon)

int gombAllapot = 0;
int gombElozoAllapot = 0;
int menuRogzit = 0;
int gombKapcsol = 0;
int ertek1 = 0;
int ertek2 = 0;
int ertek3 = 0;
int pos;

void setup()
{
  pinMode(10, INPUT_PULLUP);
  lcd.begin(16,2);           // beállítás LCD 16x2
  //16x2 LCD esetén csak a következő sor kell
   // lcd.print("Meno,Mano,Menu");
  lcd.print("Meno,Man"); // üzenet kiírása LCD-re
  // Egy soros kijelző esetén kell DEM16102  16x1 LCD második 8 karakter kiírásához
  lcd.setCursor(40,0); 
  lcd.print("o,Menu");
  delay(3000); // 3 másodperc késleltetés
}

void loop() {
  if(menuRogzit == 0){ //ha beléptünk a menübe pos ne változzon
  pos = analogRead(A0); //Potenciométer pozíció kiolvasása
  }

//potenciométert 3 menüre osztottuk mindegyik menüben be tudunk állítani egy változót
if(pos<=341 || menuRogzit == 1){  //Első szám beállítása
 
   gombAllapot = digitalRead(10); //gomb állapotának beolvasása
  if(gombAllapot != HIGH && gombElozoAllapot == HIGH){ //ha a gomb állapota magas és az előző állapot magas volt (prellezés vagy pergés megakadályozása)
      if(gombKapcsol==0){
        gombKapcsol=1;
      }else{
        gombKapcsol=0;
      }
  }
  gombElozoAllapot = gombAllapot;
  if (gombKapcsol == 0) { //ha gomb nincs benyomva első szám értékének kiíratása a kijelzőre
      menuRogzit= 0; //menürögzítés feloldása
      lcd.clear(); //kijelző ürítése
      lcd.print("Nr1:"); //Nr1: kiíratása a kijelzőre
      lcd.setCursor(4,0); //foytatás a 4 karaktertől
      lcd.print(ertek1); //érték1 változó kírása
  } else {
     menuRogzit= 1; //menú rögzítése (poti elforgatására nem lép másik menüre)
      ertek1 = analogRead(A0); //potencióméter beolvasása
     lcd.clear();//kijelző törlése
     lcd.print(ertek1);//potencióméter állásának kírása 0-1023-ig
     
  }
}
 if(pos>341 && pos<=682 || menuRogzit == 2){ //Második szám beállítása
   gombAllapot = digitalRead(10); 
  if(gombAllapot != HIGH && gombElozoAllapot == HIGH){
      if(gombKapcsol==0){
        gombKapcsol=1;
      }else{
        gombKapcsol=0;
      }
  }
  gombElozoAllapot = gombAllapot;
  if (gombKapcsol == 0) {
      menuRogzit= 0;
      lcd.clear();
      lcd.print("Nr2:");
      lcd.setCursor(4,0);
      lcd.print(ertek2);
  } else {
     menuRogzit= 2;
      ertek2 = analogRead(A0);
     lcd.clear();
     lcd.print(ertek2);
     
  }
  
}
if(pos>682 || menuRogzit == 3){ //Harmadik szám beállítása
   gombAllapot = digitalRead(10); 
  if(gombAllapot != HIGH && gombElozoAllapot == HIGH){
      if(gombKapcsol==0){
        gombKapcsol=1;
      }else{
        gombKapcsol=0;
      }
  }
  gombElozoAllapot = gombAllapot;
  if (gombKapcsol == 0) {
      menuRogzit= 0;
      lcd.clear();
       lcd.print("Nr3:");
      lcd.setCursor(4,0);
      lcd.print(ertek3);
  } else {
     menuRogzit= 3;
      ertek3 = analogRead(A0);
     lcd.clear();
     lcd.print(ertek3);
     
  }
  
}
 
 delay(200); //késleltet 200 mS kijelző frissül minden lefutáskor
}
