Tc Menu library

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.


Embedded Menu for Arduino

Web based menu designer:

Using Tc menu library:

Desktop version of the menu designer

You can use PicoSDK without requiring Arduino framework at all. The opensource version of IoAbstraction supports PicoSDK directly for nearly all cases. Our direct support generally works via CMake, and the starting point for these builds is our CMake based project in the cmakeProject directory. If you're using this commercially, please contact us for commercial support.

We can support other platforms such as ESP-IDF and STM32 using this approach commercially.

Working with displays

Display plugins

Theme plugins

Input plugins

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.

Remotely controlling your menu / IoT

IoT control with embedCONTROL 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.


IoT and Remote control plugins

Creating / building / modifying plugins

Menu library remote connectivity tutorial

By dave

TcMenu has considerable out of the box remote connectivity on both Arduino and mbed. With support for Ethernet2 library, UipEthernet library, ESP8266 WiFi, ESP32 WiFi and Serial (including Bluetooth Serial) to name a few connectors. Please pay close attention to the following classes in the reference documentation as they are mentioned frequently here: BaseRemoteServerConnection in reference docs TcMenuRemoteService in reference docs...

Menu control using a matrix keyboard

By dave

Using a matrix keyboard with TcMenu is straightforward, we use the IoAbstraction Keyboard Manager component to handle the keyboard, along with a custom listener for tcMenu that feeds the menu manager with appropriate events upon key presses. This library allows you to connect your keyboard either using Arduino pins, or any supported IoAbstraction such as the I2C PCF8574 or MCP23017....

TcMenu Designer UI - worked example

By dave

Worked example: Building a timer For this example we will create a menu that has two top level menu items; a counter which counts down from the selected value, and a Boolean switch that turns on or off the countdown. It will also have a submenu with one menu item to control the notification method. So lets draw this out conceptually...

Working with Menu Item types in tcMenu

By dave

Many embedded applications need to present status and allow users to manage settings. TcMenu provides first class support for both presenting status and managing configuration/settings using menu items. It is possible to use with and without a local user interface. All menu item types can be accessed remotely, and we have a remote API, UI solutions, and connectors to commercial IoT...

Connect to a remote server plug-in for tcMenu library

By dave

In this guide we show how to setup and use the remote server communication plugin for tcMenu. This plugin allows you to reverse the normal connection direction, and have the API side be a server accepting connections from devices. You simply configure the address and port that the connector should connect with, and ensure there is an API listening at the...

Touch screen menu calibration

By dave

There are several touch plugins in TcMenu and they all have support for controlling calibration and orientation. The calibration UI is presently at preview quality although works for many cases. Below is an image showing the common options to most touch plugins. Touch screen calibration The touch screen calibration option provides a very simple UI and calibration load and save feature...

STM32/mbed LTDC Frame buffer menu touch driver

By dave

STM32 LTDC Frame buffer touch screen support It is possible to generate an impressive menu application using LTDC via the BSP functions. It has been tested to work fully with mbed on a STM32F429 Disc1 with ILI9341 and touch, but also should work with STM32duino and other screens given the right parameters and setup. IMPORTANT NOTE: It should be noted...

Using SSD1306 to generate a Uno / low memory multi level OLED menu

By dave

It is possible to build multi level menus with an OLED display on an Arduino Uno or other low memory board provided you use SSD1306Ascii instead of the U8G2 library, as it uses a lot less memory at the cost of some flexibility. We've tested it with regular I2C SH1106 OLED display units and it works absolutely fine. To use this...

Menu In Menu support for embedded Java on Linux / Raspberry PI

By dave

You can combine many menu structures from different devices into a single menu, this works by each remote menu being represented by a object being associated with a and a . It maps the remote menu into an unused ID range on the local device and even handles dialog commands. Available from version 2.3 of tcMenu Designer and API....

Control menus with embedCONTROL.JS from a webserver

By dave

Available from 2.3 onwards. On larger embedded devices you can serve up embedCONTROL.JS from a web browser. It allows you to remotely control and monitor the menu items from a web page on any device that can run a web browser. It is a single page web application based on React.JS. It supports the most important functions from the full embedCONTROL...

These may be of interest

We use cookies to analyse traffic and to personalise content. We also embed Twitter and Youtube on some pages, these companies have their own privacy policies.

See the privacy policy and terms of use of this site should you need more information or wish to adjust your settings.