A Display That Doesn’t Press My Buttons …

I suppose this is a bit of a blessing in disguise but there are still a significant number of issues with the New Haven Displays. Recently, I sent the Version 2 displays back to New Haven to be reprogrammed with an updated firmware designed to eliminate flickering issues with the backlight. While the new firmware eliminates the flicker, it has also introduced a crippling bug in the displays ability to communicate properly – at least by I2C. For those who are interested in the details, the firmware does not handle a bus line release properly and appears not to be able to handle multi-byte transactions (such as in a custom-character write). Because there is currently no solution – nor is it my desire to debug their firmware – I have decided to go with a different display manufacturer.

I came across the CrystalFontz CFA533-TMI series of displays that provide the same 16×2 White on Blue display – with the added benefit of a built-in keypad. This is great as it frees up a significant number of pins on the Arduino, and eliminates the need for me to implement some sort of key-polling / response in the final software.

The price however is double. Moreover, the standard Arduino LCD libraries are not compatible with this display module. Whereas communication with most displays are unidirectional, communication with the CFA533 module is bi-directional. That is to say that you can send a command and then expect a response from the display (such as indicating the keys that are currently pressed, the keys that have been pressed since the last poll, and the keys that have been released since the last poll). The display also uses a CRC checksum after each command and with each response making communication a slightly more complicated (but less error prone) process.

To my knowledge, a C library or Arduino compatible library has not yet been written that supports this display – so I’ve written one myself. At present, the command set is limited to basic functions like clearing the display, writing text to the display, programming characters, and reading button states. I will release an alpha of the library in due time – when I’ve implemented enough of the command-set to be of use to others.

My initial response to the display module is that it’s great. It packs a fantastic feature set so the cost / benefit is worth it in my opinion.

More to come soon when I implement the Line Voltage sensors to detect Switch states. Oh my!