TcMenu plugins are extensions that allow the menu library to work with commonly available displays, input devices and remote control capabilities.
This touch screen input plugin supports both XPT2046 and FT6206 based touch screens. In order for this plugin to work correctly the right underlying library must be installed. These are described below: XPT2046 Paul Stoffregen XPT2046 library, best installed from library manager. FT6206 Adafruit_FT6206 library, best installed from library manager When using this touch plugin, the concept of touching and holding touches is handled by the unit itself, even managing “repeat key” is handled by the library, based on which mode it is in.
Examples of this theme Information about themes in general. Below we show two examples of this theme, one running modern in dark mode, and one running modern in traditional mode. TFT screen using modern dark mode TFT screen using modern cool blue TcMenu ships with four color themes, a cool blue theme and a dark mode theme revolving around black and dark grey. Each color scheme has a traditional mode aimed at smaller resolutions, and a modern theme designed for larger fonts, with more spacing between elements.
Examples of this theme Information about themes in general. Below we show three examples of this theme, first you see an inverse title example, but with sliders turned on, we don’t do this by default as it comes with some issues, but some may like it. Second, we show inverse video on a dual color OLED, and lastly, we show the bordered theme. oled menu using border theme plugin Two color oled inverse theme plugin oled menu using inverse title theme plugin TcMenu ships with two monochrome themes, one that uses borders for the title and avoids the use of inverse video to a large extent, and one where the title and selection use inverse video.
Requirements Requires tcMenu V2.0 or greater. Current support: ESP32 touch sensor hardware. Touch-pad sensor summary Touch-pad sensors check for button presses without an actual switch, instead the rely on a change in capacitance when the user touches an area (usually a small metal plate around the size of a finger. Given that this procedure is quite complex, it usually requires hardware support for such inputs, so it can only ever be supported when hardware allows.
TcMenu resistive touch screen input plugin supports four wire resistive touch devices that are often fitted in front of color TFT displays. This plugin requires two ADC analog inputs, but note that all pins must be output capable. The connectors are often referred to as X+, X-, Y+ and Y-. In all cases X- and Y+ must be connected to ADC (analog input) capable pins. When using this touch unit, the concept of touching and holding touches is handled by the unit itself, even managing “repeat key” is handled by the library, based on which mode it is in.
In this guide we show how to use the Adafruit_GFX library for mbed RTOS to renderer menu items with tcMenu. This rendering driver for Adafruit_GFX is built into the core menu designer download, meaning it’s available out of the box when MBED_RTOS is selected. We maintain a fork of Adafruit_GFX library for mbed that currently supports OLED displays only. Therefore, at the moment all options are memory buffered. Before proceeding, you’ll need to make sure you’ve installed the Adafruit_GFX for mbed library and the library; which also contains the OLED drivers.
We have a remote control driver for tcMenu that can be configured to easily work with SimHub dash. It requires at least 1.5.0 of tcMenu, and a version of SimHub that supports custom serial devices. We only recommend this integration for intermediate to advanced Arduino users, it requires a greater understanding of the underlying system to set it up. Please note that we are not affiliated in any way with SimHub, any issues with SimHub should be reported as usual, and any issues with TcMenu integration should be reported to us.
In this guide we show how to setup and use the ESP8266 / ESP32 Wifi remote plugin for use in the menu library. This plug-in works with most ESP boards. ESP WiFi is quite easy to set up as it’s built into the device. However, when using any ESP board and ESP8266 especially you must make sure that you frequently yield control to the runtime. If you are using task manager exclusively this should not be an issue.
In this guide we show how to setup and use the Ethernet2 and UipEthernet remote plugin for use in the menu library. This plug-in works with Ethernet shields and modules available for Arduino. This plug-in will work with most Arduino provided ethernet shields and modules that use the Ethernet2 library, it will also work with most ENC28J60 based modules using the UipEthernet library. It is your responsibility to configure and initialise the Ethernet adapter before calling setupMenu in the general application setup.
In this guide we show how to setup and use the serial communication remote plugin for tcMenu. It is a general purpose Serial plugin that has been tested with both USBSerial and Bluetooth on a number of different devices. Serial is probably about the easiest remote to set up in terms of hardware and software. Nearly all Arduino boards have a built in USB Serial adapter. On many Arduino boards there are additional Serial interfaces, usually named Serial1 and Serial2.
In this guide we show how to use the U8G2 library to renderer menu items to an OLED unit with tcMenu. This rendering driver for U8G2 is built into the core menu designer download, meaning it’s available out of the box. The U8G2 library supports a lot of different displays, with very different capabilities. This plugin concentrates on monochrome displays, mainly OLED that are supported by this library. It’s worth reading this guide fully so that you understand how we manage the various capabilities.
DfRobot input and display plugin make generating a menu for DfRobot shields very simple. There’s no configuration needed in order to produce a menu. This plugin auto configures the display to use LiquidCrystalIO library and sets up switches to use the micro-switches connected to analog input A0. Setting up for your menu First, ensure your menu structure is saved and then choose Code -> Generate Code from the menu. Once the code generation dialog appears, to the right of the current input type will be a button named “Change”.
TcMenu base input plugin supports Rotary Encoders that are either connected directly to Arduino pins or via an I2C expander such as a PCF8574 or MCP23017. This support is provided by the IoAbstraction library that’s automatically included by the menu designer UI. The only limitation for rotary encoders is that PinA must be connected to an interrupt capable pin (or if connected to an i2c device that must be connected to an interrupt capable pin).
In this guide we show how to render menu items using LiquidCrystalIO library, onto displays compatible with HD44780 (often referred to as LCD). This rendering driver is built into the core menu designer download, meaning it’s available out of the box. The LiquidCrystalIO library is a fork of the LiquidCrystal library, with a few additional capabilities. Most importantly, updating HD44780 displays is slow, think 270Khz slow. This library avoid long pauses by using task manager for managing these delays, so is uniquely able to keep your tasks running in the mean time.
In this guide we show how to use the Adafruit_GFX library to renderer menu items with tcMenu. This rendering driver for Adafruit_GFX is built into the core menu designer download, meaning it’s available out of the box. The Adafruit_GFX library supports a lot of different displays, with very different capabilities. Some are monochrome with an in-memory buffer; whereas others are high resolution colour displays that are not buffered in memory. In order to make our renderer as generic as possible it supports both of these capabilities through configuration.
In this guide we show how to use the TFT_eSPI library to renderer menu items with tcMenu. This rendering driver for TFT_eSPI library is built into the core menu designer download, meaning it’s available right out of the box from 2.1 onwards. The TFT_eSPI library supports a lot of different displays, that cover a range of resolutions. However, we have mainly tested with an ILI9341 based TFT at 320x240 resolution, but it should work with most supported displays.
This guide to tcMenuDesigner code generation runs through the way that code is created in the designer. Covering how the menu items are internally represented, how plugins are responsible for generating the code and lastly, how the code is output. It assumes that you are completely familiar with the general concepts in tcMenu. If not at least read the getting started guide before proceeding. How the UI works internally TcMenu designer UI is basically the equivalent of a form designer.
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 enough to move to the new version. Here we do not define all changes, just things that have changed in the library code by major version.