Extended and modernized version of LCDMenuLib2 for Arduino, ESP8266 and ESP32 projects.
LCDMenuLib3 is an Arduino menu library for building clear, structured menus on character LCDs, OLED displays, TFT screens, and Serial Monitor based interfaces.
It keeps the familiar LCDMenuLib2 menu tree, callback, and navigation model, then adds ready-to-use editors, dialogs, setup flows, status helpers, diagnostics, and persistence helpers for modern Arduino, ESP8266, and ESP32 projects.
- Hierarchical menus
- Dynamic & static entries
- Callback-driven architecture
- Windowed lists
- Lightweight embedded design
- Numeric & float editors
- Time & date setup
- Timer editors
- Radio lists
- Multi-choice checklists
- ON/OFF & AUTO/MANUAL controls
- Progress bars
- Confirmation dialogs
- PIN/password entry
- WiFi setup screens
- IP address editors
- Bluetooth/BLE helpers
- OTA status pages
- ESP32 Preferences support
- GPIO monitor
- I2C scanner
- WiFi scanner
- Heap & uptime monitor
- Log viewer
- Sparkline graphs
- EEPROM
- ESP32 Preferences
- SD card
- Custom storage callbacks
- Arduino Uno / Nano / Mega
- ESP8266
- ESP32
- 16x2 / 20x4 LCD
- GLCD 32x64/64x64/128x64...
- I2C LCD backpacks
- OLED displays
- TFT displays
- Serial Monitor interfaces
LiquidCrystalLiquidCrystal_I2CAdafruit_GFX
Open the examples from the Arduino IDE or compile them with arduino-cli.
The current package ships with:
ESP32_OLED_I2C_128x64_Demo: ESP32 hardware menu demo for SSD1306/SSD1309 OLED I2C 128x64 with rotary/Serial control, settings, diagnostics, screensavers, SD explorer fallback, and Lua.applauncher examples.
The demo uses a beginner-friendly multi-tab Arduino structure:
Config.h, Control.ino, Logic.ino, Menu_Render.ino,
Menu_Dynamic.ino, Menu_Windows.ino, Network.ino,
RealtimeClock.ino, Screensaver.ino, ConfigStore.ino, and
TasksScheduler.ino.
CODE_REFERENCE.md: detailed API reference with practical examples.widgets_exemples.md: ASCII/Markdown 128x64 screen mockups for the widget layouts.CHANGELOG.md: release notes and feature additions.
- Hierarchical menus with static or dynamic entries.
- Time, timer, and date setup screens.
- Windowed radio lists and multi-choice checklists.
- ON/OFF, MANUAL/AUTO, and OFF/AUTO/ON controls.
- Numeric and float editors for temperature, PWM, speed, brightness, volume, PID values, calibration factors, and setpoints.
- IP address and WiFi credential setup screens for connected projects.
- Bluetooth and BLE flow menus for discover, search, pair, connect, and disconnect operations.
- Headers, status bars, WiFi/Bluetooth/SD/lock/warning icons, and theme presets.
- Confirmation dialogs, PIN/password entry, progress screens, and multi-step setup wizards.
- Debug and diagnostic pages for GPIO, serial messages, I2C scans, WiFi scans, heap, and uptime.
- Sparkline graphs, log viewers, alarm schedules, unit selectors, OTA status pages, SD file browser state, and action menus.
- Persistent settings through EEPROM, ESP32 Preferences, SD card, or custom storage callbacks.
- Download the library
LCDMenuLib3-main.zipfrom the GitHub repository. - Open the Arduino IDE.
- Go to Sketch > Include Library > Add .ZIP Library.
- Select the downloaded
LCDMenuLib3-main.zipfile and click Open.
OR
- Download the library
LCDMenuLib3-main.zipfrom the GitHub repository and unzip. - Copy the
LCDMenuLib3folder into your Arduino libraries directory:
Documents/Arduino/libraries/LCDMenuLib3
Then restart the Arduino IDE and include the library:
#include <LCDMenuLib3.h>For dynamic widgets:
#include <LCDMenuLib3_widgets.h>For the recovered Adafruit_GFX date/time helpers:
#include <LCDMenuLib3_DateTime.h>LCDMenuLib3 is derived from LCDMenuLib2 by Nils Feldkaemper.
Original project: https://github.com/Jomelo/LCDMenuLib2
All original LCDMenuLib2 MIT license notices are preserved. LCDMenuLib3 builds on that foundation with additional widgets, helpers, examples, and documentation.
MIT license, following the original LCDMenuLib2 licensing model.