This library provides abstractions that help you write event-driven Arduino and mbed applications. It contains a simple task management facility, device pin abstraction where IO expanders can be treated like pins, interrupt management, button de-bouncing and rotary encoder support. There are many examples packaged with the library that cover most use cases.
Need help with a commercial design, or want a customised version for your hardware? Get consultancy from the library writers.
Known working devices and IDEs:
- Most AVR Arduino boards such as Uno, MEGA 2560 and Mighty core
- Most SAMD Arduino boards such as MKR, Nano IoT and Zero
- nrf52840 Arduino Nano 33 BLE devices
- ESP8266 devices such as NodeMCU / Huzzah
- ESP32 devices
- Devices running mbed RTOS V6 - fully tesed on STM32F439.
For development, you can use any Arduino or mbed IDE. However, our recommendation is platformIO with Clion or VS Code. We test the library with Arduino and PlatformIO.
Reference guide and code repo
For task management, see the Task management guide
Arduino digital and analog IO abstractions
- Arduino digital IO on Arduino Pins, IO Expanders and shift registers
- Using MultiIo - more than one IO on the same abstraction
- An example of using a PCF8574 with this library
- Using the analog abstraction for ADC/PWM/DACs
Switches, keyboards and rotary encoders
- Using switches and rotary encoders for debounced input.
- Using the keyboard manager for matrix style keyboards and keypads
- Tutorial: Using switches for event based button presses
- Example: Rotary encoder and buttons on PCF8574 with interrupt
- Examples of using the LiquidCrystalIO library
- LiquidCrystalIO code repo on github
- Commerical HD44780 Pro driver