Projekt: LCDMenuLib und LCDMenuLib2 (LCDML)
Aktuellste Version
LCDMenuLib2 Download
Alte Version
LCDMenuLib Download (keine neuen Updates mehr)
Einfache Installation über den Arduino Bibliotheksmanager möglich, einfach nach "LCDMenuLib" oder "LCDMenuLib2" suchen.
[Falls ihr Fragen habt, dass lest bitte nicht alle Seiten, nur die letzten 2 bis 5 Seiten sind interessant.]
Die Nachfolgende Beschreibung bezieht sich auf die LCDMenuLib2.
Beschreibung:
Mit der LCDMenuLib2 kann ein Menü mit mehreren Ebenen erstellt werden. Es können theoretisch maximal 254 Menüelemente angelegt werden, praktisch wird dies durch die Resourcen des Kontrollers begrenzt.
Die Menüelemente können in unterschiedlichen Ebenen angelegt werden, sodass sich grafisch eine Baumstruktur ergibt. Sprich es gibt einen Stamm, von dem verschiedene Äste (Sub Menüs) abgehen. Der Stamm des Menüs wird beim Anlegen der Lib generiert, alle Äste sind konfigurierbar.
Jedem Menüelement kann eine "Funktion", eine "Bedingung" zum Anzeigen, ein "Parameter" und spezielle Einstellungen zugewiesen werden. Diese Zuweisung werden dann je nach Einstellung abgearbeitet. Eine Funktion besteht aus einem Setup-Teil in dem Variablen initialisiert werden können. Das Setup wird beim schließen der Funktion zurückgesetzt und beim Öffnen erneut ausgeführt. Der Loop-Teil beinhaltet dann Ausgaben, die sich ständig ändern können. Der Close-Teil der Funktion wird immer dann aufgerufen, wenn die Funktion verlassen wird.
Der Inhalt einer Menüfunktion wird nur dann aktualisiert, wenn ein Aktion ausgeführt wird. Eine Aktion kann das Drucken eines Buttons sein oder aber ein Trigger der gesetzt wird. Trigger können auf eine feste Zeit konfiguriert werden, so dass die Menüfunktion in einem Intervall von XX Millisekunden aktualisiert wird. In der Menüfunktion sollte wenn möglich nur der Inhalt für das Display stehen oder die Verarbeitung der Buttons stattfinden. Es sollte hier niemals die „delay(x)“ Funktion verwendet werden.
Alle funktionell Abhängigen Funktion sind in Tabs thematisch getrennt.
Das Menü bietet möglichkeit einen Bildschirmschoner zu aktivieren. Dieser besteht aus einem Menüelement welches meistens versteckt angelegt wird.
Desweiteren kann nun in der LCDMenuLib2 eine Rollover funktion aktiviert werden. Hierbei springt der Kursor vom Ende zum Anfang oder umgekehrt insofern man versucht nach oben oder unten zu scrollen.
Wichtiges vorweg:
- Falls ihr in eurem Programm die „delay(x)“ Funktion verwenden solltet, beantworte ich keine Fragen dazu. (Schaut euch bitte das „Blink without delay“ Bespiel oder die Beispiel die bei der Lib dabei sind an.
- Stellt eure Fragen bitte im Forum als Beitrag allen zur Verfügung, dann können auch alle von einer Lösung profitieren.
- Das Backend System aus der "LCDMenuLib" wurde entfernt, da es so ganz neue Möglichkeiten gibt externe Libs einzusetzen. Hier bietet sich z.B. folgende Lib an: GitHub - arkhipenko/TaskScheduler: Cooperative multitasking for Arduino, ESPx, STM32, nRF and other microcontrollers
1.1 Features
- Beliebige Ausgabe auf Displaytypen -> Konsole, LCD, GLCD, OLED, ....
- Einfaches Einbinden von neuen Displaytypen
- Die Schnittstelle kann leicht für jeden Displaytype angepasst werden -> 4Bit, I2C, SPI, ShiftReg, ...
- Beispiele für verschiedene Libs aus der Arduinowelt: LiquidCrystal, LiquidCrystal_I2C, u8glib, u8glib2
- 254 Menüpunkte maximal (meistens begrenzt der Ram die Anzahl)
- 254 Menüpunkte pro Ebene möglich / keine Begrenzungen bei der Ebenen Anzahl (konfigurierbar)
- Trennung von Struktur- und Funktionsebene durch mehrere Tabs
- Leitfaden für den sauberen Programmaufbau / saubere Strukturierung
- Ansteuerung über mindestens 3 Taster / Funktionen (up, down, enter), Encoder, Keypad, IR, ...
- maximal 6 Taster werden unterstützt. (up, down, enter, quit/back, left, right)
- Bildschirmschoner aktivierbar, dieser wird nach X Sekunden und/oder zu Beginn angezeigt
- Scrollbalken aktivierbar
- Scrollbalken wird nur angezeigt, wenn mehr Menüelemente wie Zeilen im Display vorhanden sind
- Cursor Position wird gespeichert, nachdem eine Ebene zurückgegangen wird
- Möglichkeit direkt zwischen Menüelementen hin und her zu springen
- Möglichkeit die Menüelement ID abzufragen
- jegliche Displaytypen und Libs können verwendet werden.
- Menüpunktbezeichnungen werden im Flash Speicher abgelegt
- Funktioniert mit Arduino / ESP8266 / ESP32
- in der neusten Version werden auch grafische Displays unterstützt
1.2 Bilder
Bilder ohne Display mit dem Menü in der Konsole
Bilder grafisches Display mit u8glib
Interessante Beiträge:
10 Jahre LCDMenuLib - Beitrag