LiquidCystalIO with mbed over i2c or pins
LiquidCrystalIO is now also compatible with 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. Examples showing these use cases Hello Mbed I2C PCF8574 example Back to the main page
EEPROM implementations that are seamless between 8 and 32 bit
If like me you use both 8 bit AVR and 32 bit boards, 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 very useful 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 people suggest using an area of program Flash as an EEPROM, I don’t personally like it as flash write cycles are generally an order of magnitude lower than EEPROM, but it’s now supported via the EEPROM class wrapper.
Working with Menu Item types in tcMenu
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 endpoints for that. Menu item arrangement and storage Each menu item is part of a tree, if you are unfamiliar with trees, there’s a little terminology worth learning.
PGA2310 Volume Control device for IoAbstraction
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: #include <extras/Pga2310VolumeControl.h> Then initialise globally: SPIWithSettings spiSettings(&SPI, CS_PIN); Pga2310VolumeControl pga2310(spiSettings); And to use it as a floating point value
Simple Test - unit test framework for Arduino and mbed
Simple test is a no-frills unit testing framework that works on Arduino and mbed. It sits on top of IoAbstraction and SimpleCollections and works on a very wide range of Arduino boards and mbed. It uses a similar method of test creation to AUnit, and you’ll probably find much of this very familiar. Why did we write this? We really liked using AUnit library, and had four sets of embedded tests that were based on that library.
Arduino text utilities in IoAbstraction
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 #include "TextUtilities.h" Often times, we need to build text up within a buffer, so it is useful to have a series of functions that can work on a buffer, appending to the end of the buffer.
Arduino logging using io-logging
Logging is part of the IoAbstraction offering, 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. Both IoAbstraction and tcMenu use this logging to provide information about internal state and operations. The logging is fully integrated into both IoAbstraction and TcMenu, and this change is backward compatible at a code level.
Task Manager - Spin Lock guide
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 acquired. While waiting for the lock in the spin, TASKS DO NOT RUN, and you must never call yieldForMicros while holding a lock.
All library - Cross platform build support
Moved, see [arduino-libraries.md] for the list.
IoAbstraction - Cross platform build support
Arduino library compatibility matrix and build time settings General Arduino On all devices we try to configure the device to the highest precision possible, and provide read and write methods based on float values between 0 and 1. Notes for mbed For mbed we support mbed V5 and V6 Bare-Metal and RTOS. Pins are managed using the underlying gpio methods. Interrupts are managed using InterruptIn. Analog input PWM output, and DAC output are all supported, DAC output is only enabled when the board has an onboard DAC.