Projekt: LCDMenuLib / LCDMenuLib2 ( LCDML ) - Menü mit mehreren Ebenen

Hallo Jomelo,

vielen herzlichen Dank für diese unglaublich schnelle Umsetzung. Es funktioniert soweit auch alles, nur das ich in meiner "FUNC_splash_screen" keine loops verwenden kann. Hier mein derzeitigr Code:

/* ==========================
 * SPLASH-Screen
 *
 * Beschreibung: 
 * Diese Funktion zeigt die darzustellenden
 * Messwerte an.
 * ========================= */ 
  void FUNC_splash_screen(void)
  {   
    /* --------- INIT ---------
     * Initialisierung dieser Funktion
     * wird nur einmal beim Start dieser Funktion ausgefuert
     * danach nur erneut, wenn die Menu Funktion verlassen wurde
     * wenn keine Variablen initialisiert werden müssen, kann diese 
     * Funktion anstatt mit if(!CTR_init()) ....     mit 
     * CTR_init();  aufgerufen werden     
     */   
    if(!LCDML.FuncInit()) 
    {
      /* Init Function */             
      // Static Display 1st Row for m_dot
      lcd.clear();                   // Clear the LCD Display
      lcd.setCursor(0,0);            // set Cursor to initial position 1st Row
      lcd.print("m");            // print custom character 5 "dotted_m"
      lcd.print(" :");               // 
      lcd.setCursor(12,0);           // set Cursor to position 12 in 1st Row
      lcd.print("kg/s");             //
      // Static Display 2nd Row for T
      lcd.setCursor(0,1);            // set Cursor to initial position 1st Row
      lcd.print("T :");              // 
      lcd.setCursor(12,1);           // set Cursor to position 12 in 1st Row
      lcd.print('\xDF');             // print custom character 6 "°"
      lcd.print("C");                //     
    } 
    /* --------- LOOP ----------
     * Hier sollte der Code stehen der ständig neu geladen wird 
     * z.B. eine Uhrzeit oder änliches.
     */
     lcd.setCursor(3,0);            // set Cursor to position 3 in 1st Row
     lcd.print(millis()/1000);      // display seconds elapsed since power-up
     lcd.setCursor(3,1);            // set Cursor to position 3 in 1st Row
     lcd.print(millis()/1000);      // display seconds elapsed since power-up  
    
    /* --------- STOP  ---------      
     * CTR_func_end (direct, enter, up, down, left, right)
     * Fall in dieser Funktion keine Variablen zurückgesetzt werden 
     * müssen, kann diese Funktion auch vereinfacht mit CTR_end(0, 1, 1, 1, 1, 1);
     * aufgerufen werden. Die Endbedingungen müssen durch die Zahlen >0 vorgegeben 
     * werden
     * Wenn alles 0 ist, hängt das gesammte Programm in dieser Funktion fest
     */
    if(LCDML.FuncEnd(0, 1, 0, 0, 0, 0)) 
    {
      /* Falls noch Variablen zurückgesetzt werden müssen, bevor diese Funktion
       * verlassen wird, kann dies in dieser If Schleife geschehen
       */
    }     
  }

Und ich hätte noch eine Frage zur Verwendung der Functions generell. Wie kann ich eine globale Variable an eine Funktion übergeben? Ich wollte einen Konfigurationspunkt für die Hintergrundbeleuchtung hinzufügen und bin daran gescheitert, da ich meine Variablen für den anzusprechenden Pin und den Helligkeitswert nicht in die Funktion bekommen habe.

Beste Grüße,
Jan