Go Down

Topic: Problem: Menüführung mit LCD (Read 1 time) previous topic - next topic

Torsten.b

Hallo Allerseits,

seit Weihnachten mit dem Arduino-Virus infiziert, versuche ich derzeit, eine Routine für die Einstellung verschiedener Parameter zu schreiben - mit bislang mäßigem Erfolg.

Das Gesamtprojekt: Ein Übungsgerät für Morsetelegraphie.  Während das Hauptmenü und die einzelnen Routigen funktionieren, ist es mir nicht möglich, eine Unterroutine für das Setup zum Laufen zu bewegen. Die Routine sieht folgendermaßen aus:


void setup_menue ()
{
 int setup_item=1; // Variablen für Menüpunkte Setup
 int max_setup=2; // Welche Menüpunkte gibt es?
 boolean auswahl1=false;
 boolean enter1=false;
 int i=0;

 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("Setup:");
 delay(200);
 
 

   if (digitalRead(taster_up)==LOW)
   {
     setup_item++;
     auswahl1=true;
     if (setup_item>max_setup) // Schützt vor nicht vorhandenen Menüpunkten
     {setup_item=1;}
    delay(200);
   }
   
   if (digitalRead(taster_dwn)==LOW)
   {
     setup_item--;
     auswahl1=true;
     if (setup_item<1)
     {setup_item=max_setup;}
     delay(200);
   }
   
   if (digitalRead(taster_enter)==LOW)
   {
     enter1=true;
     auswahl1=true;
     delay(200);
   }

 
 switch(setup_item)
 {
   
   case 1:
   
     lcd.setCursor(0,1);
     lcd.print("Geschwindigkeit");
     auswahl1=false;
     
     if (enter1==true)
       {
         lcd.clear();
         lcd.setCursor(0,0);
         lcd.print("Geschwindigkeit");
         lcd.setCursor(0,1);
         lcd.print("WPM (10-60):");
         lcd.setCursor(12,1);
         lcd.print(wpm);
         enter1=false;
         delay(150);
       
   
        while (!enter1)
          {
             if (digitalRead(taster_up)==LOW)
             {
               wpm++;
               delay(200);
               if (wpm>60) // Tempo zu hoch?
               {wpm=60;}
               lcd.print("  ");
               lcd.setCursor(12,1);
               lcd.print(wpm);
               auswahl1=true;
               
             }
   
             if (digitalRead(taster_dwn)==LOW)
             {
               wpm--;
               delay(200);
               if (wpm<10) // Zu langsam?
               {wpm=10;}
               lcd.print("  ");
               lcd.setCursor(12,1);
               lcd.print(wpm);
               auswahl1=true;
               
             }
   
             if (digitalRead(taster_enter)==LOW)
             {
               enter1=true;
               auswahl1=true;
               lcd.setCursor(0,1);
               lcd.print("                ");
               lcd.setCursor(0,1);
               
             }
          }
        }
          lcd_spalte=0;
          cwspeed=int(1200/wpm); //Zeiten für eine Puntklänge errechnen
          dot=cwspeed;
          dash=cwspeed*3;  // Neue Geschwindigkeit übernehmen
          enter1=false;
          auswahl1=false;  
       
   break;
 
  case 2:
     lcd.setCursor(0,1);
     lcd.print("Tonhoehe");
     auswahl1=false;
     enter1=false;
   
   break;
 
 }
}



Das Problem: Bei Aufruf der Routine wird sie nach ca. 0.5 s automatisch wieder beendet. Halte ich der Enter-Taster gedrückt, springe ich ins Geschwindigkeit-Menü und kann die Geschwindigkeit ändern.

Ich bin sicher, es ist ein schlimmer Anfängerfehler - also nicht zu laut lachen :-) Nur ich bin zurzeit ziemlich ratlos, wie ich die korrekte Funktion hinbekomme. Für sachdienliche Hinweise wäre ich euch dankbar!

Gruß,
 Torsten

Kalli

Hallo Torsten.b,

ich habe vor ein paar Monaten ein Morseprogramm modifiziert. Eine Anzeige hat es nicht, aber ich kann über 4 Tasten folgende Modi
einstellen
- Ton hoch oder runter
- Geschwindigkeit hoch oder runter
- Buchstaben, Zahlen, Buchstaben oder Zahlen gemischt oder ganze Texte
- Ton ein - aus

Der Text wird über USB ausgegeben.
Ein Relaisausgang ist auch drauf.



Eine Anpassung für eine Anzeige ist dann bestimmt kein Problem.

Gruß Kalli

bensor

Hi

bist du schon weitergekommen?

ich hab nahzu das gleiche problem  =)

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview