OK, I admit it. I have a weakness for displays. Most of the projects that I’ve got in the hopper include some sort of graphical display. While the ubiquitous LCD character display may be inexpensive, I find them to be terribly limiting and, frankly, kind of boring.
Since delving into microcontroller development I’ve managed to get my hands on a pretty decent collection of graphical displays. I’m currently rather obsessed with the new(ish) MemoryLCD displays from Sharp; look for a subsequent post detailing how to work with these.
One of my frustrations with the current state of graphical displays in the microcontroller realm is the lack of consistency and uniformity in terms of libraries. Switching displays is a painful proposition; if you are lucky you may find an existing library for the display as a starting point. The library may or may not be functional, will undoubtably be incomplete, and will most likely have a completely different API than what you are used to. The GLCD project makes an attempt at supporting several displays, but I’m not fond of the API and adding support for new displays is rather difficult. Some vendors such as Adafruit do take the time to build simple display libraries for the displays that they sell, but they tend to lack uniformity between displays.
I’ve spent a good deal of time researching and prototyping solutions and have designed a new unified library for graphical displays. Called AnyDisplay, this library will provide a single, consistent API for integrating graphical displays with Microcontroller projects. The library consists of a well-fleshed out, well tested API for graphics primitives which is consistent across all displays. Adding support for new devices requires developing a small driver for device-specific implementations.
Ultimately, this will allow you to easily add cool graphical displays to your projects. Focus on the product that you are trying to build rather than spending so much time dealing with low-level details. The consistent API will make experimenting with new displays a much simpler proposition.