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

TcMenu - Overview and quick start

By dave

Menu library and designer for Arduino and mbed TcMenu is a modular, IoT ready multi-level menu library for Arduino and mbed supporting many input, display and IoT / remote interfaces. It makes presenting configuration, status and operational information much easier. First, you design your menu structure using the designer UI, then using the code generator you convert your menu structure into...

Multi language locale based menu for Arduino and mbed

By dave

TcMenu 4.0 onward supports multi-language menus based on resource bundles which are effectively properties files containing language translations. The designer lets you set up translations on a per-locale basis for the app name, each menu item, and even for additional strings in your application. Once enabled the properties files are turned into a series of C++ include header files that...

Embedded Java for Raspberry PI and other embedded Linux

By dave

Embedded Java for Raspberry PI and Linux works slightly differently to the C++ project creator in that it is a starter project with a webserver and JavaFX UI built in. After project creation you then go about configuring the project how you like, and the designer will keep the menu callbacks up-to-date in the controller, the menu definitions that make up...

Rendering using themes - properties, grids and icons

By dave

Most display plugins can be customized using TcThemeBuilder, a utility class that allows you to simply configure fonts, colors, spacing, grids and icons. To the left you can see cool-blue theme with a multi-column grid layout. Grids allow for multi-column menus by breaking rows up into multiple columns. You can configure graphical settings at the default level, or even override settings...

Setting up IO-expanders in the menu designer

By dave

Setting up IO devices has been made much easier as of V2.2 of the designer software. you can now directly edit the IO expander configurations directly within tcMenu. When we discuss IO devices we are talking about objects that refer to either device pins, or any other device such as I2C expanders or shift registers from the IoAbstraction library ....

Integrating EEPROM support into menu applications

By dave

IoAbstraction EEPROM support that are using EEPROM storage. Menu Manager makes it very easy to save values to EEPROM between runs. Each menu item can optionally have a storage point in the EEPROM area (-1 / 0xffff means not stored). Any items that have a valid EEPROM address will be persisted upon calling the function on menuMgr, and similarly,...

Securing sub-menus and remote connections with an Authenticator

By dave

You can secure both sub-menu items and remote connections using an . In summary, when an is present on any attempt to show a secure sub menu will result in a dialog asking for the pin; only proceeding to display the sub menu if the pin matches the on in . In addition, all remote/IoT connections will only be...

Taking over the display from a renderer

By dave

TcMenu allows you to take over the display from the renderer very easily, and once you own the display, you will be called back at regular intervals by the rendering class. During the time that you've taken over the display or presented a dashboard, you're responsible for the user input and rendering. Please note that you should never update the screen...

MenuManager and menu iteration

By dave

contains the functions to manage menu items, there is a global instance of this class called on Arduino and mbed boards. Here we present the most commonly used features, check out the reference docs for more details. There are a lot of iteration helper functions that can be used to navigate through menu structures. These are described further down...

Rendering menus to TFT, LCD and OLED using tcMenu

By dave

TcMenu supports a wide range of rendering devices, from HD44780 based units using our LiquidCrystal fork through to mono OLEDs and full colour TFT displays using Adafruit_GFX and TFT_eSPI library. Over to the left you see an example of rendering to OLED device with title widgets. You can also easily take over the display to draw your own screen at any...

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.