I2C LCD extra IO
The I2CLCDextraIO is an I2C expansion board that when used as a LCD backpack it allows you to reduce the number of pins to control them. The I2C LCD extra IO has been developed with the character LCDs in mind reducing the pin count and enabling chaining up to 8 LCD on the same I2C bus.
By freeing up to 9 pins when connecting a LCD it is possible to use them on almost any pin constraint application. The I2C expander module allows you to free up pins (only 2 are required) to control LCDs. With this module you can connect up to 8 in the same I2C bus by simply reconfiguring the programming jumpers.
For Arduino users we have created a library that is backward compatible with your current sketches. Please refer to the usage Section - SW Libraries.
Additionally, for projects requiring additional IO pins, the I2CLCDextraIO can be used as an IO expander. As before, their can be up to 8 connected to the I2C bus.
A library is also available (well, is also in the LCD library) to control each individual IO from the board.
Voltage Range 2.5V to 6V Number of IO 8 quasi-bidirectional Drive / Sink capability 100mA between all IOs Maximum single pin current 25mA I2C Address Base 0x38
The I2CLCDextraIO is a very simple expansion board to use. The board layout is ideal to use as an LCD backpack and has a very convenient potentiometer to control its contrast, even while the full assembly (LCD and expander board) is fitted into the final project.
Each individual OI pin can be used independently using the I2CIO Library with simple digitalWrite functions like the rest of the sketches.
LCD use mode
The 16 pin header can directly interface with any standard LCD, ranging from 8x1 to 40x4 (all supported by the library and I2CLCDextraIO).
For LCD usage, a very convenient potentiometer is connected to control the contrast of the LCD and is accessible even when the LCD and I2CLCDextraIO are assembled on a PCB.
The only thing required is that the LCD has a standard pin out (16-pin single line connection header at the top). The board also breaks out a pin to be enable LCD backlight control (BL) independently.
The I2C control lines (SDA and SCL) are convenient 2.54mm headers that can be inserted into a standard breadboard for prototyping, fitting terminal blocks or simply solder it directly onto a PCB.
IO expansion use mode
When used stand alone, the board breaks out all the IO lines of the board to the 16 pin header connector, though only 8 are used.
All pins from the board can be used as quasi-bidirectional IOs and are labeled on the PCB for convenient wiring to projects.
The I2C address of each board is 0x38 as shipped (address jumpers all 0). This address can be changed by removing the solder jumper of the I2C board address and reprogram its new address.
The new address of the board is calculated by summing the base address (0x38) to the binary representation of the Address jumpers. Should you wish to connect multiple LCDs to the same I2C bus, each I2CLCDextraIO board must be configured to have a different I2C address.
If you are using Arduino, we have created an open source library that is backward compatible with the standard LiquidCrystal library supplied as standard with the IDE.
Furthermore, it is a complete LCD control library that can replace the current LiquidCrystal library and be a one stop LCD library for all your projects. In I2C mode, the library is sufficiently performant to allow for animations and as a whole it uses almost 600 bytes less than the original LiquidCrystal which will be available for your sketches. With this library in place, your current projects should just work as the already do.
If you are migrating your sketch from a 4 bit parallel interface to an I2C interface you will only need to change an include file and the name of the object (variable) to what your display uses. The rest will remain the same.
The LCD library supports the following LCD control interfaces all in one package:
- 4 bit parallel LCD control
- 8 bit parallel control
- I2C control (using the I2CLCDextraIO)
- Shift Register control (project home link). The library is freely available, in the project wiki you will find all the details you need to successfully instal it and use it.
Sources and documentation are available here - LCD Library.
A library to control the I2CLCDextraIO board with out the LCD (as an IO expander) is also available as open source (well, is the same module the LCD library uses) allowing you to control each individual IO from the board individually.
Sources and documentation available for download here - I2CIO Library.
Schematic available in the download section.
Components and Part Numbers
Qty Value Device Parts Reference 2 0.1uF CAP0805 C1, C2 80-C0805C104M5RACTM 2 1K RESISTOR0805 R1, R2(*) ERJ-6GEYJ102V 1 Header M05PTH IF 5 pos - 2,54mm header 3 JUMPER JUMPER-3-OLDSMD A0, A1, A2 --- 1 LCD I2C Interface BOARD_INFOL+ REV_A.2 IO expansion 1 LCD-16X2NOHOLES LCD-16X2NOHOLES U1 16 pos - 2,54mm header 1 PCF8574A PCF8574A IC1 PCF8574APWR 1 10K TRIMPOT10K_BOURNS VR1 TC33X-2-103E (*)R2 - can also be 470 (or something lower) to get more LCD backlight brightness.
Schematic and Design Files
Please visit the download section.
Buy one now
If you don't want to build one you can always order one from here:
Lets keep this part short. I2C LCD extra IO by F. Malpartida is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.