Timed blink - IO Abstraction library example
Timed blink is a version of well known Arduino blink example that is shipped with the standard IDE, but is redesigned to use the Abstraction and timer library. Example circuit for the code is exactly the same a blink, and if you use the inbuilt LED pin (which it does by default) then there’s no need to build any circuit whatsoever. Instead of using delay() calls to set the duration of the led flash, it uses the task management library to schedule a task.
Rotary encoder with non-polling (interrupt based) switches from PCF8574
IoAbstraction has full support for interrupts on most devices, meaning we can connect a Rotary Encoder to an Arduino using a standard PCF8574 IO expander chip. In order to do this we need the PCF8574 /INT line to be connected to an Arduino pin that supports interrupts (such as pins 2 or 3). Further, you can also have switches handle push button input without polling, by initialising for interrupt, especially useful with IO exapnders.
AW9523 I2C IoExpander with LED controller - Arduino and mbed
IO Abstraction library fully supports the AW9523 16-bit IO expander chips on Arduino and mbed. It requires only two pins (three for interrupt mode) SDA, SCL, and optionally INT. Our driver integrates the GPIO, LED controller, and interrupt support providing nearly all functions using familiar Arduino terminology. This device can even be used in conjunction with an AW9523 analog device to make it even easier to use the LED controller.
MCP23017 I2C IoExpander for Arduino and mbed
IO Abstraction library fully supports the MCP23017 16-bit IO expander chips on Arduino and mbed. It requires only two pins (three for interrupt mode) SDA, SCL, and optionally INT. Our driver provides nearly all functionality using similar terminology to Arduino itself. The MCP23017 provides 16 additional input or output ports, they have very similar capabilities to device pins and interrupt support is managed per pin. This device can be used for switches, rotary encoders, and with LiquidCrystalIO.
MPR121 I2C Touch/IoExpander/LED controller - Arduino and mbed
IO Abstraction library fully supports the MPR121 12-bit Touch control and IO expander chips on Arduino and mbed. It requires only two pins (three for interrupt mode) SDA, SCL, and optionally INT. Our driver integrates the Touch, GPIO, LED controller, and interrupt support providing nearly all functions using familiar Arduino terminology. This device can even be used in conjunction with an MPR121 analog device to make it even easier to use the LED controller.
PCF8574 / PCF8575 I2C IoExpander for Arduino and mbed
IO Abstraction library fully supports the PCF8574 8-bit and PCF8575 16-bit IO expander chips on Arduino and mbed. It requires only two pins (three for interrupt mode) SDA, SCL, and optionally INT. Our driver integrates the interrupt support for you so you can attach interrupts very easily. The PCF8574 provides 8 additional input or output ports, but there are few limitations around how the device can be used, and these are discussed below.
IoAbstraction: Using a matrix keyboard / keypad
Matrix keyboards are arranged such that the keys are in a matrix of rows and columns. This means that instead of needing a spare input for each key, one INPUT for each column and one OUTPUT for each row is all that’s needed. In order to use the keyboard, we create a class of type MatrixKeyboardManager and configure it with an IoAbstractionRef, a KeyboardLayout that describes the keyboard attached (there are some standard ones already defined) and a listener that will be informed of changes.
Arduino Button presses that are handled like events
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 desktop applications. To start we need to get the IoAbstraction library and open the buttonRotartyEncoder example.
Liquid Crystal fork example using IO Abstraction library - examples
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 that show how to use the fork with both a shift register and an 8574 i2c IO expander.
STM32/mbed LTDC Frame buffer menu touch driver
STM32 LTDC Frame buffer touch screen support It is possible to generate an impressive menu application using LTDC via the BSP functions. It has been tested to work fully with mbed on a STM32F429 Disc1 with ILI9341 and touch, but also should work with STM32duino and other screens given the right parameters and setup. IMPORTANT NOTE: It should be noted that using this plugin outside the already tested case of mbed, discovery F429 board would be for advanced users only, and may involve a lot of configuration and setup.