Go Down

Topic: Arduino Uno und Menü für LCD Keypad Shield (Read 14533 times) previous topic - next topic

skorpi08

Funktioniert 1A!

Schau mal warum ich Datum nicht einstellen kann?!
Nicht Mensch, nicht Tier: Programmierer halt...

Jomelo

Ging das vorher ?
Ich kümmer mich mal eben um mein Abendessen  XD

skorpi08



[edit]
Ist das Beispiel so übersichtlicher ?
[/edit]


Man gewöhnt sich an alles. Zu vergleichen mit Win7 und Win 8.



Wäre übersichtlicher wenns ohne:
Code: [Select]
DigitFuncPtr LCDMenu_functions[] =
 
Code: [Select]
PROGMEM const char *g_lang_menu_table[] =
 
Code: [Select]
void CTR_menu_init()
wäre.

zB
Code: [Select]
  _LCDMENU(g_lang_0  , Item1     , "Information"              , FUNC_info);
 
  _LCDMENU(g_lang_1  , Item2     , "Temperatur"               , FUNC);
  _LCDMENU(g_lang_2  , Item21    , "Temperatur soll"          , FUNC_soll);
  _LCDMENU(g_lang_3  , Item22    , "Senken in Tagen"          , FUNC);


könnte ich mir vorstellen, dass man da diese 3 Codes einbinden könnte. Entweder in  "no changes here" oder in die Lib verlegen.
Nicht Mensch, nicht Tier: Programmierer halt...

Jomelo

Ja da bin ich noch am überlegen wie ich das machen kann.
Leider habe ich das noch nicht hinbekommen, würden die Variablen nicht im Flash gespeichert wäre es einfacher. Aber da dadurch die Variablen als 'const' deklariert werden, kann ich sie Dynamisch nicht mehr erweitern.

skorpi08

#139
Apr 02, 2013, 09:25 pm Last Edit: Apr 02, 2013, 09:38 pm by skorpi08 Reason: 1

Ging das vorher ?


Bei dem gestrigen Update ging das.

in void FUNC_dat(void)
soll der inhalt von
void  FUNC_info(void)

Bei dem gestrigen Sketch hatte ich es so gemacht
Code: [Select]
     else if(tmp == _LANG_MENU_dat)
     {
       set_Date(tmp);
       Date(tmp);
     }



Hier der Aktuelle Code:
Code: [Select]
void  FUNC_info(void)
  {
    (CTR_start_func());
    if(CTR_func_timer(1000, 1))
{
    lcd.clear();
    char lcdline[17];
    lcd.setCursor(3,0);
    sprintf(lcdline,"%02d:%02d:%02d",hour(),minute(),second());
    lcd.print(lcdline);
    lcd.setCursor(3,1);
    sprintf(lcdline,"%02d.%02d.%04d",day(),month(),year());
    lcd.print(lcdline);
}
}
void FUNC_dat(void)
  {
    if(!CTR_start_func())

    if (menu_button_down == 1 && pos == 0) //set day-
      {
            setTime(hour(),minute(),second(),day()-menu_button_down,month(),year());
            menu_button_down=0;
           // lcd.setCursor(3,1);lcd.blink();
      }
....rest des codes
Nicht Mensch, nicht Tier: Programmierer halt...

Jomelo

Die Funktionen
Quote

Code: [Select]

else if(tmp == _LANG_MENU_dat)
      {
        set_Date(tmp);
        Date(tmp);
      }


Werden nun automatisch aufgerufen, also alles was man oben definiert in der Liste definiert wird aufgerufen. Wozu dient denn die Funktion set_Date(tmp)  und wieso wird an die Funktionen tmp übergeben, tmp ist ja nur ein Zahlenwert.

Ich sehe gerade wieder das deine Buttons in der Start Funktion sind die nur einmal ausgeführt wird. Du kannst dir das wie ein Setup vorstellen das nur bei der Initialisierung geladen wird.
Code: [Select]

void FUNC_dat(void)
  {
    CTR_start_func();

    if (menu_button_down == 1 && pos == 0) //set day-
      {
            setTime(hour(),minute(),second(),day()-menu_button_down,month(),year());
            menu_button_down=0;
           // lcd.setCursor(3,1);lcd.blink();
      }
....rest des codes


CTR_start_func muss einmal aufgerufen werden, da hier dann festgelegt wird, welche Funktion nach dem Tastendruck und dem ersten Durchlauf wieder aufgerufen wird. Daher kann ich diese Funktion auch nicht weg optimieren. Zum anderen kannst du die Funktion mit   if(!CTR_start_func()) {  verwenden, wenn du selber noch Werte einmalig definieren willst. Ansonsten kann man immer  CTR_start_func(); verwenden.

So, ich kann erst morgen Abend weiter Verbesserungen liefern.

Musikhai

Na Hallo,

komme bei eurem diskutieren grad nicht mehr mit, darum habe ich mich auch still verhalten. Habt ihr den den Sketch fertig programiert bekommen und wäre er etwas für mich oder sollte ich lieber bei dem bleiben, welchen wir am Wochenende erstellt haben?

Jomelo

Bleib erstmal bei deinem Programm. Die neue Lib befindet sich noch in der Beta Phase.

Geändert wurde folgendes:
- Menü wird nun im Flash abgelegt und auch von dort ausgelesen
- Menü kann teilweise einfacher generiert werden (hier wird noch gearbeitet)
- Das Beispielprogramm wurde vereinfacht (wird noch dran gearbeitet)
- Das Menü ist nicht mehr auf 6 Ebenen in die Tiefe begrenzt
- Pro Menü Ebene können 120 Buttons angelegt werden
- Weniger Ram Auslastung
- Kompatibilität zu Version 1.04 wurde hergestellt
- Scroll Probleme wurden behoben

Musikhai

Ok, werde ich machen. Wir sollten hier nur immer mal wieder etwas psoten, damit wir nicht zu weit nach hinten rutschen und wir unseren Post nicht mehr wieder finden.

skorpi08

Wer suchet der findet.
Wozu brauchst du den Post ganz oben? Was und wem solls bringen?
Nicht Mensch, nicht Tier: Programmierer halt...

Jomelo

Nun muss ich mich ja auch melden wenn es so weiter geht.

Für diese Möglichkeit sieht das Forum die "Notify" Funktion vor. Diese befindet sich ganz unten unter dem Einträgen auf der rechten Seite. Wenn du darauf klickst, bekommst du jedesmal eine Email, wenn jemand in diesem Thread eine neue Nachricht hinterlässt.

Es ist sehr bequem und du muss den Thread nicht jedesmal neu suchen.

skorpi08

Danke für die Erklärung :)
Dachte eigentlich dass er es schon kennt
Nicht Mensch, nicht Tier: Programmierer halt...

Musikhai

Danke für die Erklärung und die Hilfe für jemanden, der erst neu hier im Forum ist.

Jomelo

Die Diskussion zum Menu kann hier weitergeführt werden.

Die neuste Version befindet sich am Ende des ersten Eintrages:

http://arduino.cc/forum/index.php/topic,73816.msg555253.html#msg555253

Go Up