Menü erstellen

Hallo ich habe eine kleine Frage zu einem einfachen Menü. Ich war der Annahme das ein Menü aus einer
Switch Case Funktion besteht in der die einezelnen Menüpunkte hinterlegt werden. Der Switch Case Funktion geht in meinem Fall eine Variable vorraus die ich per Tasterabfrage hochzählen lasse. Je nachdem auf welchem Wert die Variable steht wird dann auch entsprechend der Menüpunkt angezeigt. Nur leider funktioniert das nicht so wie ich mir das gewünscht hätte :o . Bei Tastendruck ändert sich nichts. Die Variable wird anscheinend nicht hochgezählt. Kann mir hier evtl. jemand helfen. Hier mein Code dazu.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

int backPin = 4;
int enterPin = 7;
int leftPin = 6;
int rightPin = 2;
int downPin = 3;
int upPin = 5;

int relaisPin = 8;

void setup() 
{
lcd.begin();

 
 pinMode(backPin,INPUT);
 pinMode(enterPin,INPUT);
 pinMode(leftPin,INPUT);
 pinMode(rightPin,INPUT);
 pinMode(downPin,INPUT);
 pinMode(upPin,INPUT);
 pinMode(relaisPin,OUTPUT);

}

void loop() {
int zahler; 
int menucounter = 0;
if (digitalRead(upPin)==HIGH)
 {

menucounter++;

digitalWrite(relaisPin, HIGH);

} else {
 digitalWrite(relaisPin, LOW);
}









switch (menucounter)
 {
     case 1:
     lcd.setCursor(0,0); 
     lcd.print("Heizzeiten      ");
     lcd.setCursor(0,1); 
     lcd.print("                ");
     break;

     case 2:
     lcd.setCursor(0,0); 
     lcd.print("Temperaturen    ");
     lcd.setCursor(0,1); 
     lcd.print("                ");
     break;

     default:
     lcd.setCursor(0,0); 
     lcd.print("Hauptmenue      ");
     lcd.setCursor(0,1); 
     lcd.print("                ");

 }
}

Wenn wir drüber schauen sollen, dann mach das dein Sketch lesbar ist, auch für mobile Geräte.
Und entferne die unnötigen Leerzeilen, das macht es nur schlimmer.

Setze den Sketch in Code-Tags, Schaltfläche </> oben links im Editorfenster.

Du jetzt bei jedem Durchlauf der Loop den menucounter wieder auf 0.

P.S. Setze Deinen Code bitte in Codetags, dann können Dir auch die Tabelt/Phoneuser helfen, weil sie dadurch den Code besser lesen könnem.

Hallo,

die Initialisierung von menuecounter muss ins Setup.
Und vor dem Switsh brauchst du noch eine abfrag die den Überlauf kontrolliert und dann menuecounter wider auf null setzt. Außerdem musst du eine Abfrage einbauen die die Abfrage des Pin solange verhindert bis der Pin wider LOW ist. Sonst wird menuecounter ohne unterlass ständig durch Zählen.

Deine Konstruktion kann leider überhaupt nicht funktionieren.

Gruss Temucin

Versuche mal dies:

static int menucounter = 0;

Ok danke für die Tips ich werde mich mal drübermachen :slight_smile: