Arduino Button presses that are handled like events

By dave

Have you ever wanted to treat button presses in Arduino similar to other languages, where you get an event callback when the switch is pressed? Look no further, the IO abstraction library can do that with very little fuss. In fact it can also do the same for rotary encoders as well, treating them similar to how scroll bars work in...

Programming Arduino using tasks instead of loops - tutorial

By dave

In this tutorial for TaskManagerIO I explain the differences between traditional loop based programming; which is very common on the Arduino platform and event based programming based on taskManager. Although event based programming looks slightly more complicated at first, as the sketch and surrounding code gets more complex, eventing will scale to that much easier. Eventing task frameworks make ongoing maintenance...

Liquid Crystal fork example using IO Abstraction library - examples

By dave

Recently, I have made a fork of Arduino LiquidCrystal (HD44780 display driver library) that allows the library to work with the IO abstraction library, meaning you can configure a display to use Arduino pins, an i2c 8574 IO expander or shift registers by simply changing one line of code in your sketch. There are two additional examples provided with this version...

LiquidCystalIO with PicoSDK/mbed/NativeCpp over i2c or pins

By dave

LiquidCrystalIO is now also compatible with PicoSDK and mbed boards. It supports regular mbed pins, I2C backpacks based on PCF8574 and MCP23017 based connections. You can adapt any of the Arduino examples for mbed very easily, as the API is 99% the same. The most recent examples for this are in our native C++ CMake project in https://github.com/TcMenu/tcLibraryDev Back to the...

EEPROM implementations that are seamless between implementations

By dave

EEPROM support varies considerably between boards and project designs, you've probably already noticed that there's no EEPROM support on some 32 bit boards. I think that's quite unfortunate as EEPROM storage is invaluable for many applications. Relying on memory backup like many systems today do, is nowhere near as reliable (a flat battery loses everything). Further, I've even seen discussions where...

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...

PGA2310 Volume Control device for IoAbstraction

By dave

PGA2310 Volume Control device Provides a simple analog device that can be used to control a PGA2310 volume device. Left channel is 0 and right channel is 1. The device should be connected on the SPI bus as usual. This should work with Arduino now, and mbed in a patch release coming soon. To use first include the header: Then initialise...

Arduino text utilities in IoAbstraction

By dave

IoAbstraction comes with a few text utilities that can be helpful when rendering text as raw character arrays. Internally, IoAbstraction and TcMenu DO NOT use any string objects to avoid runtime memory allocation. See the complete text utility documentation To use the text utilities you need to include the header Often times, we need to build text up within a buffer,...

Arduino logging using io-logging

By dave

Logging is part of the TcMenu offering provided by library , it has a moderately complete logging framework that is still lightweight enough to work on small boards. It can easily be turned off completely for very small boards too. TaskManagerIO, IoAbstraction and tcMenu use this logging to provide information about internal state and operations. You can also use this logging...

Task Manager - Spin Lock guide

By dave

Task Manager supports the concept of Spin Locks to protect sensitive asynchronous operations from becoming interleaved. For example, to protect sensitive blocks of code. Be very aware that this does not include a memory barrier. A spin lock loops waiting for the lock to become available, you can either spin for a period of time, or until the lock is...

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.