A few days ago we featured the USBPass, an offline password keeper made with very few components. At the end of our write-up we mentioned that [Josh] was already working on another version of his hardware, which involved adding an OLED screen to the platform. To help him pick one he created QtLedTest, a Qt-based tool that simulates different OLED displays and GUI layouts for them. Internally QtLedTest is composed of QLedMatrix (a widget that simulates LED matrices), an SSD1306 OLED controller simulator, a simple graphics drawing library and some functions to draw text on the simulated screen. [Josh] used Fontbuilder together with a program he made in order to convert fonts he had found on the internet to C files. All the source code [Josh] made can be found on Github and should be updated in coming weeks as the final program is a bit slow to render the simulated screens.
It usually takes a bit of work to gain confidence when it comes to using new parts. [Glitch] got his hands on this OLED display which is manufactured by Sabernetics and wanted to give it a whirl before building a project around it. He grabbed his Bus Pirate to help learn the ins and outs of the new part.
The 96×16 Dot-Matrix display uses the i2c protocol, keeping the pin count really low (six pins for: ground, reset, clock, data, chip select, and voltage). Since the Bus Pirate gives you command-line-like access to i2c it’s a natural choice for a first test. In fact, the tool has been our go-to device for that protocol for most projects.
The first commands sent are configuration values for the SSD1306 that drives the display. These configure contrast, voltage conversion, and other important values necessary to power on the display. It sprung to life, showing random pixels since the RAM had not yet been initialized. With that success [Glitch] moved on to the Bus Pirate’s scripting capabilities and ended up with a Python script that drives the demo seen above. Now that he knows the commands he needs, it’ll be a lot easier to write code for a microcontroller driver.