-
        

Ergebnis 1 bis 3 von 3

Thema: Mini C++ Problemchen | Menü

  1. #1
    Neuer Benutzer Öfters hier Avatar von Sim0n
    Registriert seit
    30.12.2011
    Beiträge
    20

    Mini C++ Problemchen | Menü

    Anzeige

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

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    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.
    Grüße,
    Daniel

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von steveLB
    Registriert seit
    24.10.2005
    Beiträge
    481
    [X] <-- Nail here for new Monitor

Ähnliche Themen

  1. Anfangs-Problemchen
    Von martinpi im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 10.11.2008, 23:09
  2. Diverse Problemchen
    Von HermannSW im Forum Asuro
    Antworten: 16
    Letzter Beitrag: 27.02.2007, 17:49
  3. SRF08 Problemchen
    Von BlackTuareg im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 21.06.2006, 10:32
  4. Interrupt Problemchen
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 20.06.2006, 14:43
  5. Problemchen mit i2c_beispiel.exe
    Von ReiniXXL im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 23.12.2005, 13:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •