Last Updated on 8. October 2026 by SuffocationLink status: OK
Da ein Menü auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalitäten in Klassen gepackt.
Components
Hardware
- Arduino Uno
- LCD Shield Link status: OK
Software
- Arduino IDE
- LiquidCrystal Lib (kann über den Bibliotheksmanager installiert werden, siehe auch hereLink status: OK )
- Meine Menu Lib (siehe unten)
Ziele
- Schritt einfache Header mit Klassen, die in einem Hauptprogramm verwendet werden können (erledigt).
- Schritt Verpacken der Klassen als Arduino Lib, welche in die Gui importiert werden kann. (erledigt)
- Weitere Menüpunkt Varianten erstellen. (Kommt vielleicht noch)
Installation
Download
Die Lib kann bei GitHub runtergeladen werden (Hier der LinkLink status: OK).
HereLink status: OK könnt ihr sie direkt als Zip-Datei herunterladen.
Arduino IDE
Das Zip könnt ihr in der Arduino GUI installieren.
The integration of libraries in general is described under the following link, and I will not go into further detail here.
https://fambach.net/arduino-ide#BibliothekenLink status: OK
Test programme
Bei der Lib ist ein Testprogramm dabei, welches ihr über die Examples auswählen könnt.
Der Pfad ist: LCD Menu Lib -> LCDSchieldTest
Noch nicht ganz klar? HereLink status: OK seht ihr, wie es geht.
Das Programm kompilieren und auf den Arduino spielen.
Wenn ihr ein anderes Board verwendet bzw. nicht die LCD Keypad Platine, müsst ihr die Einstellungen für die Knöpfe und das LCD Display entsprechend eurer Konfiguration anpassen.
Erklärung
Das Menü wird in der Funktion buildMenu() aufgebaut. Hier wird ein Hauptmenüknoten erstellt, an den dann der Rest angehängt wird.
Folgende Knoten stehen aktuell zur Verfügung:
ItemMenu – Menü -> Kann alle anderen Menüpunkte als Kind bekommen. Kann auch als Untermenüpunkt verwendet werden.
ItemBool – Schalter -> Dieser Menüpunkt kann ein- und ausgeschaltet werden.
ItemInt – Ganzzahlenwert -> Hier können Integer Werte erhöht oder vermindert werden. Min und Max geben die Schranken an.
Die Callbacks werden im Beispiel nicht benutzt, diese können dazu verwendet werden, eine Funktion in eurem Programm aufzurufen, wenn sich der Wert eines Menüpunktes ändert.
Navigation im Menü
Oben steht am Anfang das Hauptmenü.
Unten steht der 1. Menüpunkt. Mit den rechts/links Tasten könnt ihr den entsprechenden Menüpunkt auswählen. Mit runter springt ihr in den Menüpunkt, mit hoch springt ihr wieder raus.
Die Menüs können beliebig verschachtelt werden, wie ihr an Submenue 1 und 2 seht.
Conclusion
Für mich reicht die Bibliothek erst mal, ich habe aber noch ein paar Ideen, vielleicht werde ich die bei Gelegenheit nochmal umsetzen:
- Gleitkomma Menüeintrag
- Balken Menüeintrag, für kleine Intwerte wird ein Balken angezeigt, der die Einstellung symbolisiert.
- Auswahlliste Menüpunkt (.. Wähle A, B oder C …)
- zusätzliches Beispiel für Callbacks
Related Posts
- Ulanzi TC001 Smart Pixel ClockLink status: OK
- ESP8266 Colourful Weather Station AZSMZ V1.8Link status: OK
- D1 Mini Shield – RGB LED (Einzeln)Link status: Unknown
- Preview – Heltec Cube Cell Board mit LoRa WanLink status: OK
- Preview – Rundes1,28 zoll TFT LCD DisplayLink status: OK
- D1 Mini Shield – RGB LEDLink status: Unknown
- D1 Mini Shield – I2C ConnectorLink status: OK
- D1 Mini Shield – Matrix LED ShieldLink status: OK
- D1 Mini Shield – Oled 64×48Link status: OK
- Bars in Crystal LCD Retro StyleLink status: OK
Problems
Aktuell klappt das Entprellen der Tasten im Beispiel nur bedingt. Den Fehler muss ich noch finden und beheben.
Sources
| Date | Change | Author |
|---|---|---|
| 08.10.2026 | Überschriften-Hierarchie korrigiert (H1→H2, Unterebenen eine Stufe tiefer) | Suffocation |
| 03.10.2026 | Rechtschreibung korrigiert: Tippfehler, Kommas, Grammatik, Groß-/Kleinschreibung Log-Liste eingefügt | Suffocation |
| 07.11.2018 | Post created | Suffocation |