PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mini C++ Problemchen | Menü



Sim0n
29.03.2012, 18: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);
}
}
}

ePyx
30.03.2012, 08:20
Als Hinweise zum Random-Verhalten -> Prellen

Wenn du mehrfach den Taster betätigst, dann wird er immer bei Null anfangen sobald der Pin HIGH ist. Das wird durch die Initialisierung der Variable i im Kopf der For-Schleife bedingt.

steveLB
30.03.2012, 16:34
http://www.rn-wissen.de/index.php/Taster-Abfrage_in_C