filed under: led hacks, Microcontrollers
Video, three Oleds
If you’ve ever thought of utilizing a small and inexpensive OLED display in your project [Rossum] has the details you need to get started. In the past we’ve seen him take a tour of available LCD screens and this is much the same, detailing his look at three different models. In the video after the break each is connected to a driver board that he made. The boards have two important components, the first is a boost driver for the 12-16V input the screens need, the second is an octal buffer necessary if you are using a 5V microcontroller. These take care of the hardware considerations, making it simple to drive them with a chip of your choosing.
- Reverse geocache features UI and is reprogrammable (01/09/2011)
- James Grahame - 2011-01-09 11:13:01 (01/09/2011)
- OLED displays and small microcontrollers (01/09/2011)
- Data logging football (01/09/2011)
- Ben Kokes - 2011-01-09 01:28:17 (01/09/2011)
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 128x128.
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 first screen is a monochrome (actually blue) 1 bit per pixel 128x32 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 96x64 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 128x128 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 https://sourceforge.net/projects/smartlcd/files/ (threeOleds.zip). The OLEDs and smartLCDs will converge into something a little more coherent in the near future.
Until next time,
- OLED displays and small microcontrollers
- OLED displays and small microcontrollers - Hack a Day
- Three OLEDs - rossum's posterous
- Touring the available Nokia LCD screens - Hack a Day
- YouTube - three Oleds
- smartlcd - Browse Files at SourceForge.net
- Display Controller Products - Downloads | Standard LCD Controllers | S1D13774 | Documentation