TcMenu is a modular, IoT ready multi level menu library for Arduino, mbed, Pico-SDK, mbed and many more platforms supporting many input, display and IoT / remote interfaces. It makes presenting configuration, status and operational information much easier. Apache licensed and therefore safe for commercial use.
Start by working out what information and state is to be represented in the Designer UI. Take inspiration from the Arduino menu examples. Then, run Code Generator which outputs code for the selected board ready for use in an IDE.
Menu library core documentation for Arduino
- TcMenu - Getting started, including video & slides
- tcMenu Designer releases page
- TcMenu library examples and starter projects
- Get help from the C++/Java/Flutter consultants who wrote tcMenu
- Guide to working with Menu Item Types
- Code Generator and plugins guide
- EEPROM integration with menus
- Setting up IO expanders in designer
- Authentication - securing sub-menus and remote connections
- Creating and generating menus using the CLI
- MenuManager and Menu iteration Guide
- Writing a multi-language locale based menu
- Useful helper functions in tcUtil.h
- Embedded library reference documentation
- GitHub Repository - for source and releases
- Major code level differences between library versions
- Arduino library compatibility matrix and build time settings
Menu library for vendor environments using CMake (non Arduino)
At the moment PicoSDK is available and does not need Arduino or mbed environment present. The PicoSDK version is even open-soured, and all the libraries can build with the CMake build tool, the starting point for these builds is CMake based library build. If you want this support to continue, it is imperative you support the project, as we have no other funding sources for it.
Specific for Java on Raspberry PI or embedded Linux
We have tested the designer application and embedCONTROL on a Raspberry PI, so not only can you make a Raspberry PI embedded application, you can even run designer and embedCONTROL on an RPI as well! The Java API and EmbedControl libraries are fully JavaDoc commented.
- Creating an embedded Java menu application for RaspberryPI
- Display menu on JavaFX/OpenJDK on Raspberry PI
- Menu In Menu - Embed remote menus into a single app
Display plugins
- Working with display renderers
- Creating and using TitleWidgets and bitmaps
- Themes, properties, grids and icons
- How to define fonts within theme configuration
- Taking over the display and dashboards
- DfRobot LCD shield driver
- LiquidCrystal / hd44780 display driver
- AdaFruit_GFX driver - ILI9341, ST7735, Nokia5110 etc
- AdaFruit_GFX mbed RTOS for OLED - SSD1306, SH1106
- U8g2 driver - for SSD1306, SH1106 etc
- SSD1306Ascii low memory driver - for SSD1306 on Uno
- TFT_eSPI driver with double buffering
- STM32 LTDC mbed frame buffer with touch
- Customising a display driver
Theme plugins
- OLED/Mono themes both bordered and inverse
- Color themes for most display sizes
- Dark themes for most display sizes
Input plugins
- Rotary encoder, buttons or joystick
- Using a matrix keyboard to control menu
- DfRobot analog pin keypad input
- Resistive touch screen menu integration
- XPT2046 and FT6206 touch screen menu integration
- Capacitive Touch-pad sensor input
Remotely controlling your menu / IoT
Our menu designer can build in IoT capabilities near automatically (on Ethernet2, UipEthernet (ENC28J60), ESP8266-WiFi, ESP32-WiFi, Bluetooth and Serial). Allowing you to remotely monitor and control your device using Embed Control with minimal effort.
However, to write your own remote monitoring, use our Java Remote API, TypeScript/JavaScript API, C#/DotNet API, or the Python API. Coming soon is a Dart API.
- embedCONTROL UI documentation
- Menu library remote connectivity tutorial
- IoT monitoring and control using the Java API
- TagVal protocol documentation
IoT and Remote control plugins
- Serial driver for usb, rs232 and Bluetooth control
- Ethernet driver for Ethernet2 and Uip control
- WiFi driver for ESP32 and ESP8266 control
- Simhub connector for tcMenu using custom serial protocol
- Embedded Java plugin for ethernet/WiFi remote
- Serving up embedCONTROL in a web browser