LCD menu

tag,
Ich habe gerade ein Projekt für das ich ein LC - Display mit einem Menu benötige.
Das Menu steht bis auf meine Frag.
Wie kann ich abfragen aufwelchem Menu punkt ich gerade bin.
Und wenn Y < 600 ist das er dann in den neuen Menu punkt reingeht und mit Y > 250 soll er wieder in das Main menu zurück gehen.

Hat da Jemand eine Idee?

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 21);

const int PinX = A7;
const int PinY = A6;

int StateX;
int StateY;
int menu = 1;

unsigned long Vorherige;
unsigned long VorherigeX;
unsigned long VorherigeY;
unsigned long intervall = 500;
unsigned long intervallX = 500;



void setup() {
   Serial.begin(9600);
   Serial.println("Startet..");
  pinMode(PinX, INPUT);
  pinMode(PinY, INPUT);
  lcd.begin();
  updateMenu();
 
}

void loop() {

  Serial.println(StateX);
  Serial.println(menu);
  unsigned long aktuellY = millis();
  if(aktuellY-VorherigeY >= intervallX){
  StateX = analogRead(PinX);
  StateY = analogRead(PinY);
    VorherigeY = aktuellY;
  }

  unsigned long aktuell = millis();
    if (aktuell - Vorherige >= intervall) {
    if (StateX > 840) {
      Vorherige = aktuell;
      menu++;
      updateMenu();
   }
  }
unsigned long aktuellX = millis();
  if (aktuellX - VorherigeX >= intervall) {
    if (StateX < 50) {
     VorherigeX = aktuellX;
      menu--;
      updateMenu();
  }
}
}
void updateMenu() {
  switch (menu) {
    case 0:
      menu = 1;
      break;
    case 1:
      Serial.println("Update Menu 1");
      lcd.clear();
      lcd.print(">Costumer IDS");
      lcd.setCursor(0, 1);
      lcd.print(" Ueberwachung");
      lcd.setCursor(0, 2);
      lcd.print(" Settings");
      lcd.setCursor(0, 3);
      lcd.print(" Status");
      break;
    case 2:
      Serial.println("Update Menu 2");
      lcd.clear();
      lcd.print(" Costumer IDS");
      lcd.setCursor(0, 1);
      lcd.print(">Ueberwachung");
      lcd.setCursor(0, 2);
      lcd.print(" Settings");
      lcd.setCursor(0, 3);
      lcd.print(" Status");
      break;
    case 3:
      Serial.println("Update Menu 3");
      lcd.clear();
      lcd.print(" Costumer IDS");
      lcd.setCursor(0, 1);
      lcd.print(" Ueberwachung");
      lcd.setCursor(0, 2);
      lcd.print(">Settings");
      lcd.setCursor(0, 3);
      lcd.print(" Status");
      break;
    case 4:
      Serial.println("Update Menu 4");
      lcd.clear();
      lcd.print(" Costumer IDS");
      lcd.setCursor(0, 1);
      lcd.print(" Ueberwachung");
      lcd.setCursor(0, 2);
      lcd.print(" Settings");
      lcd.setCursor(0, 3);
      lcd.print(">Status");
      break;
      
    case 5:
      Serial.println("Update Menu 5");
      lcd.clear();
      lcd.print(">MenuItem5");
      lcd.setCursor(0, 1);
      lcd.print(" MenuItem6");
      lcd.setCursor(0, 2);
      lcd.print(" MenuItem7");
      lcd.setCursor(0, 3);
      lcd.print(" MenuItem8");
      break;
    case 6:
      Serial.println("Update Menu 6");
      lcd.clear();
      lcd.print(" MenuItem5");
      lcd.setCursor(0, 1);
      lcd.print(">MenuItem6");
      lcd.setCursor(0, 2);
      lcd.print(" MenuItem7");
      lcd.setCursor(0, 3);
      lcd.print(" MenuItem8");
      break;
    case 7:
      Serial.println("Update Menu 7");
      lcd.clear();
      lcd.print(" MenuItem5");
      lcd.setCursor(0, 1);
      lcd.print(" MenuItem6");
      lcd.setCursor(0, 2);
      lcd.print(">MenuItem7");
      lcd.setCursor(0, 3);
      lcd.print(" MenuItem8");
      break;
    case 8:
      Serial.println("Update Menu 8");
      lcd.clear();
      lcd.print(" MenuItem5");
      lcd.setCursor(0, 1);
      lcd.print(" MenuItem6");
      lcd.setCursor(0, 2);
      lcd.print(" MenuItem7");
      lcd.setCursor(0, 3);
      lcd.print(">MenuItem8");
      break;
    case 9:
      menu = 1;
      break;

  }




}

Steht doch in der Variablen 'menu'. Oder habe ich dein Problem nicht verstanden?

Ja das Frage ich hier auch ab aber wie kann ich abfragen ob er in dem Menü Costumer IDS ist z. B.

Und ob es sinvoller ist eine eigene methode dafür zu erstellen wie für das Main menu auch

      if (menu == 1) {
        lcd.clear();
        lcd.setCursor(3, 0);
        lcd.print("Costumer IDS");

      } else if (menu == 2) {
        lcd.clear();
        lcd.setCursor(3, 0);
        lcd.print("Uebwerwachung");
      } else if (menu == 2) {
        lcd.clear();
        lcd.setCursor(3, 0);
        lcd.print("Uebwerwachung");

      } else if (menu == 4) {

      } else if (menu == 5) {

      } else if (menu == 6) {

      } else if (menu == 7) {

      } else if (menu == 8) {

      }
    }

Hast du meine Antwort im anderen Thread gelesen und evtl. auch verstanden.
Wenn ja, könnte man ja noch etwas dazu schreiben.
Ist sicher für alle lesenden interessant.

Hallo,

Du hat menue 1 und 2 mit lcd.print(">Costumer IDS") beschrieben, woher sollen wir wissen ob Du Menu 1 oder Menu 2 meinst. Jedenfalls die Variable menu kannst du doch abhängig von Deinem y auf einen wert setzten den Du willst. Damit wird dann das entsprechende menu bearbeitet. Die Variable menu kannst du doch abfragen das machst du ja auch mit if.

Hast Du Deine beiden anderen Probleme gelöst, oder stocherst Du im Heuhaufen rum ohne Sinn und Verstand. Ich hab eigendlich immer erst mal das Problem gelöst das ich habe. Wenn mir das auf dem eingeschlagenen Weg nicht gelingt suche ich nach einem anderen Weg. Ist das dann erledigt gehts an das nächste Problem, Du gehst hier anscheinend völlig kaotisch vor, machst Du das immer so ?

Ich glaub langsam du willst uns auf die Schippe nehmen ,hast Du Langeweile weil es regnet?

un schüss

Gruß Heinz

Dominik1313:
Und wenn Y < 600 ist das er dann in den neuen Menu punkt reingeht und mit Y > 250 soll er wieder in das Main menu zurück gehen.

Das kann man gar nicht abfragen. Y<600 und Y>250 ist beides gleichzeitig war, wenn Y zwischen 599 und 251 ist. In dem Wertebereich für Y sind immer beide Abfragen war. Wofür soll sich dann das Programm entscheiden?

Franz