Three OLEDs

There are a number of cheap and adorable OLED displays appearing on ebay and elsewhere. But their parallel interfaces, enigmatic driver ics and funny voltage requirements make them tricky to use. These breakout boards make it easy to connect an oled to an Arduino or any other device with a SPI interface.



All of these screens have lots of pins. Most breakout boards dutifully provide all those pins to the outside world which leads to lots of wiring up and few unused GPIO ports. Fortunately these screens can be configured to use a SPI interface saving lots of pins.

SPI has a bad rap of being slow when it comes to displays. With a bit of fiddling it is possible to get 500k pixels per second from a Arduino Duemilanove which is more than enough perf for these small screens: >30fps on 128×128.

The job of converting from 5v GPIO to 3v3 is handled by a octal buffer (74AHC244 or equivalent). They are cheap, small and a lot easier to assemble that a bunch of resistors. If you are using 3v3 IO then leave the octal buffer unstuffed and use the 3v3 holes.


OLEDs require a 12v-16v supply. Although 2 out of the 3 screens actually have ‘built in’ DC-DC converters they still need external components to generate the required voltages. These components are often fussy or inefficient and I usually just roll my own. Here I have used a FAN5331 boost converter. It isn’t expensive and because it switches at 1.6Mhz you can use a small 10uh inductor which is handy of you are cramming parts onto a small board.

The Screens

The first screen is a monochrome (actually blue) 1 bit per pixel 128×32 display based on a SSD1303 controller. These are usually $5-$8 on ebay although I have seen them in china for < $2. Because this screen is only 1bpp we can afford an actual 512 byte frame buffer on the Arduino code. Of course you don’t need to use a frame buffer if you don’t want to.

The second screen is 96×64 and has 65k colors. It is based on the SSD1332 and comes in 0.8mm and 0.7mm pin pitch versions. They are $6-$7 on ebay, < $2 in china and show up as caller id screens in lots of phones and in some small mp3 players. If you see a small color OLED with a 31 pin connector it is usually a SSD1332. This controller has hardware accelerated fills and line drawing (<1ms to fill a screen) which could save you some perf and power if you do that sort of thing.

The third screen is my absolute favorite. It is a 128×128 pixel 262k color Samsung PM12FC001B that uses a LD50T6160 controller. These show up as spares every now and then on taobao. They are found in lots of OLED digital picture frames and several Samsung YP MP3 players. The demo shows a little Wolfenstein thing running on a Arduino.

A note about the video. OLEDs don’t look very nice on video due to their use of PWM. I assure you these look much nicer in person; crisp high contrast images on all three.

Code, schematics and pcbs posted at ( The OLEDs and smartLCDs will converge into something a little more coherent in the near future.

Until next time,



26 thoughts on “Three OLEDs

  1. Michel Stempin

    Great job!

    Yeah, I agree with you, the FAN5331 is probably the best choice for an OLED boost converter.

    One question: you mentioned finding screens for

  2. Rubu

    Awesome stuff as always! I’ve got 3 of the 96*64 ones, haven’t gotten round to using them though.
    Can’t wait for the code and schematics.

    Michel Stempin:
    You can use a Taobao agent, As a matter of fact I got my 3 OLED screens shipped to Europe for a grand total of about 15usd. I used but there are many more alternatives.

  3. MicroMinded

    Thanks for the heads up on yoybuy Rubu!

    @Rossum: Ever thought of using the iPhones 3G screens for a project? You seem to have a knack for figuring out what ic’s these displays use and most of us don’t even know where to start!

    The iPhone screens are 320×480 3.5in and you can get them on Taubao shipped for $20USD. They also have the capacitive touch screens for a whipping $7USD. If you want to go crazy get the iPad screen at a whopping 9,7in and 1024×768. I don’t think an Arduino let alone a Cortex-M3 could push that display but for $60USD ill buy three!

  4. rossum

    I have used yoybuy and taobaonow with no problems. taobaonow has a better ui.

    I have been fiddling with the 3G screens; they are a little tricky because of they have a high speed serial rgb interface and funny connectors. One of these days I will get around to the iphone lcd + cap screen.
    I really like using spares from things like the ipad/iphone/nokias etc. Can’t beat volume pricing and the occasional ghost shift.

  5. Rubu

    On that note; I think the SE X1 LCD’s are also a nice one, 3,2″, 480×800.
    Can even be had for a little less than the iPhone 3G screens (DealExtreme actually carries them at 24usd).
    A guy I knew was having a go at figuring out the interface, not sure whatever happend to that though.

  6. Anonymous

    This looks extremely interesting, and dovetails into something I”ve been trying to work together but don’t have the technical knowhow for. Could these OLED’s be used inside a soldiers helmet with a portable comms system and a small USB style camera to allow soldiers to transfer data quicker? If you are interested in hearing more of what I”m working on you can contact me through my facebook page.

  7. erohead

    Hey Peter, we chatted a few months ago about the wristwatch project I’m working on. We’re about to launch a hacker API and wanted to know if you’d like an alpha test device to try out? I tried pinging you by email, but if you get this message you could hit me back at eric AT Thanks!

  8. Chad Maglaque


    VERY interested in the work you’re doing with OLED drivers/graphics acceleration with the Arduino. We are working on a proof of concept for a 3D viewing with an OLED screen on the Arduino – similar to what you have here – and would like more information on the screens/backpacks that you’ve outlined and how we might be able to get 2 or 3 for testing purposes. For our purposes, we need to be able to drive refresh rates of 60-120Hz for a 16×16 pixel array. (being able to run something at those rates with the screen sizes you have above would be even better, but not a requirement)

    please contact me at chad (at) clariantechnologies (dot) com

    very best


  9. Chad Maglaque


    Perhaps even simpler is there a way simply to set/drive the frequency and duty cycle of the PWM on these displays? — is that exposed through the SPI at all?



  10. Loic

    Hi rossum,

    I wanted a 3.3 to 16v to supply OLED as you (a SSD1351 programmer) and I used a FAN5331 too. But it seems this components acts like a wire for me… I have a 3.3 to 3.3v LOL
    Of course I verified the wiring thanks to your schematic and the datasheet (to know the pins positions/order). I don’t understand why 😥


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s