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

Working with lists of data - ListRuntimeMenuItem

By dave

Runtime lists support the displaying of list based data, where each row can have a name and values. There are three types of list item: Firstly FLASH based items, these work similar to enum items as the items are predefined at compile time. You can build these in designer directly. Secondly there's the option to have RAM based values, where an...

Working with large numbers - EditableLargeNumberMenuItem

By dave

tcMenu supports Large numbers for editing, with values up to 12 digits in total, and it can optionally handle negative values too. The underlying storage is a bit packed BCD array. This makes for efficient storage and complete accuracy in all cases. However, you can convert to and from floating-point values for convenience when accuracy is not as important. Class types...

Working with sub-menus - SubMenuItems

By dave

Items of type submenu can hold another list of menu items; which are presented as children of this menu item. Depending on the renderer you are using, this will display similar to the main menu when selected. BackMenuItem is silently added during code generation, it is needed to provide the user a way to leave the submenu back to the main...

Working with text, date, time and IP address items -

By dave

An item that represents a complex data type that needs to be edited a part at a time. The value is generally held in RAM and can usually be saved in EEPROM between sessions. These items take various forms on the embedded side, either an Ip Address, date, time or plain text. Time menu items allow for the editing of...

Working with boolean values - BooleanMenuItems

By dave

An item that can represent only boolean true or false. It can be configured to show as ON/OFF, TRUE/FALSE or YES/NO as required. Type information for BooleanMenuItem Class Type: / in MenuItems.h Enum returned by is MENUTYPE_BOOLEAN_VALUE This item is based on an Info block Information applicable to all menu items BooleanMenuItem reference documentation Creating an object...

Working with floating-point values - FloatMenuItems

By dave

Float items are useful for displaying the result of inexact calculations and are only supported for read only purposes. The issue with floating points is that they are inexact and unsuited uses where they are ticked by a rotary encoder. An example use of a float menu item would be the average temperature of many readings. Type information for FloatMenuItem Class...

Working with fixed choices - EnumMenuItems

By dave

An item that can represent a known series of values where only one can be selected at a time. Somewhat like a combo box. For enum items these values must be set at compile time, and on AVR / ESP they are in program memory. We store the choice as a zero based integer with the first choice being 0 and...

Working with scroll choice items - ScrollChoiceMenuItem

By dave

Scroll Choice menu items allow for a single choice from a list of choices. Unlike enum menu item the choices may not be known until runtime, and could change at any time. There are several ways that choices can be stored either in a fixed width memory character array, EEPROM fixed width array, or lastly using a custom callback for each...

Working with numeric values - AnalogMenuItem

By dave

Working with Analog Items An item that can represent an integer, fractional, or decimal numeric value that can be editable using a rotary encoder or touch scroll/slider control. Currently, the underlying value is a 16-bit unsigned integer value but the maximum range is from -32768 to +32767. This is because we can make it appear negative by providing a negative offset....

Detailed description of RuntimeMenuItem

By dave

Items that extend from runtime menu item use a callback at runtime that can be used to get more or less every property, but will use the INFO block if it is available (not null). That being the case, they don't need but can use an info block (that is defined ahead of time) ahead of time. However, in...

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.