This library provides abstractions that help you write event-driven Arduino and mbed applications. It has device abstractions that allow you to treat device pins, PCF8574, MCP23017, MPR121 and AW9523 almost the same in code. This includes higher level interrupt management, buttons with de-bouncing, matrix keyboards, rotary encoders and even LiquidCrystalIO. There are many examples packaged with the library that cover most use cases.
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.
Need help with a commercial design, or want a customised version for your hardware, see the consultancy link at the top of the page?
Reference guide and code repo
- Read the reference guide
- Go to the code repo on github
- Collections - BtreeList
- Arduino library compatibility matrix and build time settings
Digital IO for Arduino and mbed
- Arduino & mbed digital IO on Pins, IO Expanders and shift registers
- PCF8574 I2C Io Expander
- MCP23017 I2C IoExpander
- AW9523 I2C IoExpander with LED Control
- MPR121 I2C IoExpander with Touch and LED control
- Using MultiIo - more than one IO on the same abstraction
- Abstracted I2C/Wire on Arduino and mbed
Analog IO for Arduino and mbed
- Using the analog abstraction for ADC/PWM/DACs
- Raising events on Analog input
- Ioa Extras - extra Analog devices
Switches, keyboards and rotary encoders
- Using switches and rotary encoders for debounced input
- Using the keyboard manager for matrix style keyboards and keypads
- Touch screen interfaces for Arduino and mbed
- Analog Joysticks for Arduino and mbed
- Tutorial: Using switches for event based button presses
- Example: Rotary encoder and buttons on PCF8574 with interrupt