Sim0n
29.03.2012, 19:23
Hey,
ich habe hier ein Display (welches Modell ist eigentlich irrelevant), einen Taster und einen Arduino.
Ich möchte erreichen, dass ich durch ein Menü wechseln kann:
Brennweite
Grad
Reihen
Dann taste ich einmal:
>Brennweite<
Grad
Reihen
nochmal...
Brennweite
>Grad<
Reihen
usw..
Das klappt auch ganz ok...aber nur wenn ich den Taster gedrückt halte..dann durchläuft er die Punkte immer... aber wenn ich taste dann springt er manchmal einfach zum vorherigen Punkt, zum untersten usw..ein bisschen Random. :/
Wie, bzw. woher kommt dieses Phänomen?
Hier der Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void Grundmenu()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Brennweite()
{
lcd.setCursor(0, 0);
lcd.print(">Brennweite< ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Grad()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print(">Grad< ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Reihen()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print(">Reihen< ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void setup()
{
pinMode(13,INPUT);
lcd.begin(20, 4);
Grundmenu();
}
void loop(){
for (int i=0; digitalRead(13)==HIGH; i++){
if(i==4){
i=1;
}
if(i==1){
Brennweite();
delay(90);
}
if(i==2){
Grad();
delay(90);
}
if(i==3){
Reihen();
delay(90);
}
}
}
ich habe hier ein Display (welches Modell ist eigentlich irrelevant), einen Taster und einen Arduino.
Ich möchte erreichen, dass ich durch ein Menü wechseln kann:
Brennweite
Grad
Reihen
Dann taste ich einmal:
>Brennweite<
Grad
Reihen
nochmal...
Brennweite
>Grad<
Reihen
usw..
Das klappt auch ganz ok...aber nur wenn ich den Taster gedrückt halte..dann durchläuft er die Punkte immer... aber wenn ich taste dann springt er manchmal einfach zum vorherigen Punkt, zum untersten usw..ein bisschen Random. :/
Wie, bzw. woher kommt dieses Phänomen?
Hier der Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void Grundmenu()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Brennweite()
{
lcd.setCursor(0, 0);
lcd.print(">Brennweite< ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Grad()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print(">Grad< ");
lcd.setCursor(0, 2);
lcd.print("Reihen ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void Reihen()
{
lcd.setCursor(0, 0);
lcd.print("Brennweite ");
lcd.setCursor(0, 1);
lcd.print("Grad ");
lcd.setCursor(0, 2);
lcd.print(">Reihen< ");
lcd.setCursor(0, 3);
lcd.print(" ");
}
void setup()
{
pinMode(13,INPUT);
lcd.begin(20, 4);
Grundmenu();
}
void loop(){
for (int i=0; digitalRead(13)==HIGH; i++){
if(i==4){
i=1;
}
if(i==1){
Brennweite();
delay(90);
}
if(i==2){
Grad();
delay(90);
}
if(i==3){
Reihen();
delay(90);
}
}
}