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 - Java API to Arduino for remote menu control

By dave

Introduction - Java Remote control The Java API contains domain and state objects that represent the items in your application along with the current value of that item. Whether used locally or remotely you use a menu tree to represent items. Whichever way, the menu structure accurately represents the structure in designer, because the Arduino embedded menu designer uses this...

Creating and using Bitmaps and Title Widgets in your menu

By dave

Within TcMenu designer there is a bitmap creation utility, it can take most common file formats as its source, and convert them to a format suitable for use in tcMenu (and many other libraries too). The bitmap creation utility is located in the "Code->Bitmap/Widget creation tool". It can create header files for bitmaps or title widgets to either the clipboard or...

Code Generator and Plugins guide

By dave

In this guide we cover code generation in more detail. Once a menu structure has been built it needs to be turned into code. To do this we use the code generator (menu: "Code -> Generate code"). Once selected a dialog similar to the one below will be presented. At this point we need to define the devices that we plan...

Using custom fonts in your menu with different libraries

By dave

In the theme plugin properties you can often select the font to use. However, there are a few points to bear in mind when using fonts. Here are the key points: Most graphical plugins (other than Uno specific) support TcUnicode, a font rendering system that has full Unicode UTF-8 support. These fonts can be easily created in the designer UI, see...

Customising input and display tcMenu plugins

By dave

Sometimes the input or rendering capabilities of the built in plugins may suit your purposes, or your hardware may not be supported. In these cases it is possible to either write a custom renderer from scratch, or more likely generate a new in the case of a graphical device. This article assumes you are customising an input or display renderer...

Changes in graphics configurations for renderers

By dave

Like any library, we occasionally need to make changes to the way that things work, this makes the library more viable going forward, and often provides major improvements in what's possible for nearly everyone. However, sometimes we need to deprecate features so that it reduces the support burden, we do this as infrequently as possible, and try and give users long...

TcMenu - TagVal protocol documentation

By dave

Embed Control local area transmissions use a protocol called TagVal with the option of sending binary data too. TagVal is a simple and lightweight protocol that has implementations on device for Arduino and mbed, and developer APIs in Java , Javascript , Python , DotNet , and Dart is coming soon. If you are working in a language where an API...

Introduction to fluent menu builder

By dave

We've added a new fluent menu builder to the library. This builder provides a more intuitive and readable way to construct menus, making it easier for developers to create complex menu structures without requiring the many static definitions of the past. We've added this builder because on most machines with moderate sized menus, the overhead of this method is relatively low....

Working with action items - ActionMenuItems

By dave

Action menu items represent a menu item that does nothing more than run the callback when it is selected. There is no hard requirement for it to have a callback, but one without a callback would have no purpose. Type information for ActionMenuItem Class type: / in MenuItems.h Enum returned by is MENUTYPE_ACTION_VALUE This item is based on...

Working with RGB color choice items - Rgb32MenuItem

By dave

An item type that represents a color in the Red Green Blue space, optionally also having an Alpha. Colors are represented as values between 0 and 255 for each part and optionally an additional part for Alpha. Type information for Rgb32MenuItem Type: with default callback of in Enum returned by is MENUTYPE_COLOR_VALUE This item is based on RuntimeMenuItem...

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.