AdaFruit released a monochrome OLED screen last week and I wanted to test it with a netduino. So, I ported the Arduino driver written by Limor to C#, wrote a basic test app, soldered header pins to the OLED display, hooked it up to my netduino and… nothing happened. It became clear that I needed to test the OLED display on an Arduino first to make sure that the screen was not defective in the first place. I had on hand a Boarduino that I had previously upgraded with an Atmega328 and hacked to run on 3.3 volts instead of 5 volts, removing the need to use the level-shifter provided with the OLED display.
These displays are small, only about 1″ diameter, but very readable due to the high contrast of an OLED display. This display is made of 128×64 individual white OLED pixels, each one is turned on or off by the controller chip. Because the display makes its own light, no backlight is required. This reduces the power required to run the OLED and is why the display has such high contrast; we really like this miniature display for its crispness!
The driver chip, SSD1306 can communicate in multiple ways including I2C, SPI and 8-bit parallel. We prefer SPI since its the most flexible and uses a small number of I/O pins so our example code and wiring diagram will use that.
The OLED and driver require a 3.3V power supply and 3.3V logic levels for communication. The power requirements depend a little on how much of the display is lit but on average the display uses about 20mA from the 3.3V supply. Built into the OLED driver is a simple switch-cap charge pump that turns 3.3v-5v into a high voltage drive for the OLEDs. You can run the entire display off of one 3.3V supply or use 3.3V for the chip power and up to 4.5V for the OLED charge pump or 3.3V for the chip power and a 7-9V supply directly into the OLED high voltage pin.
You’ll need a level shifter to communicate with this OLED using a 5V microcontroller such as an Arduino, but we include a DIP level shifter chip!
We have a detailed tutorial and example code in the form of an Arduino library for text and graphics. You’ll need a microcontroller with more than 1K of RAM since the display must be buffered.
You can download our SSD1306 OLED display Arduino library from github which comes with example code. The library can print text, bitmaps, pixels, rectangles, circles and lines. It uses 1K of RAM since it needs to buffer the entire display but its very fast! The code is simple to adapt to any other microcontroller.