Guten Abend ich habe versucht ein kleines Programm zu erstellen bzw um zu schreiben.
Habe mir ein Teil zusammengesucht.
Es soll wie folgt funktioniern.
Ich will über 2 Tasten up and down also hoch und runter auswählen können
wenn ich zb Wiskey gewählt habe mit einer Enter Taste dann soll das Programm in ein untermenü gehen und was 2cl oder 4cl anzeigen
dies tut das Programm leider nicht. Auch wenn ich zu oft hoch oder runter drücke geht das Menü zurück zur Willkommen meldung.
Habt ihr eine einfache Idee.
hier der code:
#include <LiquidCrystal.h>
#define RS 32
#define E 33
#define D4 34
#define D5 35
#define D6 36
#define D7 37
#define COLS 16
#define ROWS 2
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
const int OK = 26;
const int up = 24;
const int down = 25;
const int zurueck = 27;
int start =1;
int run =0;
int sel =0;
int sub=0;
void screen(unsigned char x);
void setup()
{
pinMode(OK, INPUT);
pinMode(up, INPUT);
pinMode(down, INPUT);
pinMode(zurueck, INPUT);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LOADING");
delay(500);
lcd.setCursor(8,0);
lcd.print(".");
delay(500);
lcd.setCursor(9,0);
lcd.print(".");
delay(500);
lcd.setCursor(10,0);
lcd.print(".");
delay(1000);
}
void loop()
{
screen('a');
while(start==1)
{
if(digitalRead(OK)==HIGH)
{
screen('b');
run=1;
start=0;
sel=0;
}
else
{
run=0;
start=1;
sel=0;
}
}
while(run==1)
{
if(digitalRead(OK)==HIGH)
{
screen('d');
sel=1;
}while(digitalRead(OK)==HIGH);
if((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH))
{
screen('c');
run=2;
} while((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH));
if(digitalRead(zurueck)==HIGH)
{
screen('a');
sel=0;
run=0;
start=1;
} while(digitalRead(zurueck)==HIGH);
}
while(run==2)
{
if(digitalRead(OK)==HIGH)
{
screen('f');
sel=2;
}while(digitalRead(OK)==HIGH);
if((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH))
{
screen('b');
run=1;
}while((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH));
if(digitalRead(zurueck)==HIGH)
{
screen('a');
sel=0;
run=0;
start=1;
}while(digitalRead(zurueck)==HIGH);
}
while(sel==1)
{
if(digitalRead(OK)==HIGH)
{
screen('g');
sub=1;
} while(digitalRead(OK)==HIGH);
if((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH))
{
screen('e');
sel=3;
} while((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH));
if(digitalRead(zurueck)==HIGH)
{
screen('b');
sel=0;
run=1;
sub=0;
} while(digitalRead(zurueck)==HIGH);
}
while(sel==2)
{
if(digitalRead(OK)==HIGH)
{
screen('i');
}while(digitalRead(OK)==HIGH);
if((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH))
{
while((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH));
}
if(digitalRead(zurueck)==HIGH)
{
screen('c');
sel=0;
run=2;
sub=0;
}while(digitalRead(zurueck)==HIGH);
}
while(sel==3)
{
if(digitalRead(OK)==HIGH)
{
screen('h');
sub=2;
}while(digitalRead(OK)==HIGH);
if((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH))
{
screen('d');
sel=1;
}while((digitalRead(up)==HIGH)||(digitalRead(down)==HIGH));
if(digitalRead(zurueck)==HIGH)
{
screen('b');
run=1;
}while(digitalRead(zurueck)==HIGH);
}
}
void screen(unsigned char x)
{
switch(x)
{
case 'a':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Willkommen");
delay(800);
lcd.setCursor(0,0);
lcd.print("Bitte Enter");
lcd.setCursor(1,1);
lcd.print("druecken");
break;
case 'b':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1> Wiskey <");
lcd.setCursor(0,1);
lcd.print("2> Rum");
delay(1000);
break;
case 'c':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1> Wiskey");
lcd.setCursor(0,1);
lcd.print("2> Rum <");
break;
case 'd':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1> 2 cl < ");
lcd.setCursor(0,1);
lcd.print("2> 4 cl");
break;
/*
case 'e':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1> 2 cl ");
lcd.setCursor(0,1);
lcd.print("2> 4 cl <");
break;
case 'f':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1> TRIGGER ");
lcd.setCursor(0,1);
lcd.print("OK value");
break;
case 'g':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("dist value");
*/
case 'h':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("2 cl");
}
}