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;
}
}