Human Device interface with minimum number of pins

As with any embedded project, there is a trade-off that has to be made between how much of the I/O gets used for the project and how much gets used for display and control(Human Device Interface or HDI). This is especially true of Arduinos and their clones.
There are boards that have more than the normal number of I/O pins but as we all know the complexity of any system will grow to exceed its capabilities. By limiting HDI features to the fewest number of connections as possible one forestalls this inevitable problem.
Therefore, I have chose to create a standard HDI for my projects consisting of an I2C based display like the ones from Newhaven Displays, (http://www.newhavendisplay.com/index.php?main_page=index&cPath=253&zenid=c31r6gbbpv5sa9avs57tdp6an2) , and the Phillips PCF8574AP (http://www.nxp.com/documents/data_sheet/PCF8574.pdf)
I have already posted on FEZZER the device driver for the Newhaven displays (http://www.fezzer.com/project/222/update-to-the-newhaven-display-serial-lcd-display/) and one for the Sparkfun MPR121 Capacitive Keypad (http://www.fezzer.com/project/245/sparkfun-mpr121-capacitive-keypad-driver/). I will be shortly posting a driver for a 4x4 Keypad decoder with interrupt service.
The PCF8574 takes advantage of a modified version of the I2C Execute Expansion( also on FEZZER posted by Bec A Fuel, I added “thread safe” to my version.) Thus it can co-exist with other I2C devices on the same bus. My resulting HDI also uses the I2C extension to ensure that my display is also save to use on the same bus.

Added image

The project is now on FEZZER. http://www.fezzer.com/project/265/4x4-keypad-via-pcf8574ap-port-extender/

Nice :wink:

I am working on some variations, I have a project where I want to build a communications sniffer so I don’t want to give up too many of the available connections for HDI. I will keep this up to date as major advancements are complete.