Creative Commons images are CC BY-NC-SA 3.0

$ 24.95

Not available
for backorder

Notify Me

added to your
shopping cart

Out of stock out of stock
24.95 1+ units
23.70 25+ units
22.46 100+ units

We do not currently have an estimate of when this product will be back in stock.

Need larger quantities?
Check out our Volume Sales program

Description: This is a basic 5V 16 character by 2 line OLED display with yellow text on a black background. OLEDs (Organic Light Emitting Diode) differ from LCDs in that they can produce their own light instead of requiring a backlight, this provides you with an advantage of lower power consumption and better viewing in the light!

This OLED screen utilizes the RS0010 chipset instead of the HD44780 chipset which means the pin out will be slightly different. While you will need ~6 general I/O pins to interface to this screen. Check the documents section below for pin outs and driver library.


Recommended Products

Customer Comments

  • I did a dumb thing and capacitor C2 burned. Is there any way to figure out what I can replace C2 with?

  • I am trying to use this display with an Arduino Due and the Adafruit_CharacterOLED library. The setCursor(r,c), clear(), and home() functions do not work properly. They appear to do nothing. I ported the code over to an ATMega328 board and it works fine.

    Anyone know where to begin troubleshooting this problem?

    • If you have a 328 based board that is 3.3V start there. This display is 5V and the Due is 3.3V which might be the problem. Testing on a 3.3V 328 based board might help you determine if that is the issue (you can probably even run the Uno or other 5V board at 3.3V). Otherwise I’d say grab a multimeter/logic analyzer/O-scope and make sure you are getting the signals you are expecting. If you are still having problems try contacting our techsupport team.

  • +1 on the serial interface!

  • Since you are using the Adafruit_CharacterOLED Library, you might want to look at my pull request and determine if your display will have similar but solvable issues: I would recommend trying it with and without my fix as they may be updating their library with the fix at some point.

    • I actually tried just randomly plugging in the OLED in place of a standard 5v LCD and everything displayed fine! So maybe the OLED library isn’t really necessary? The only quirk I found was that the .clear() function in the LiquidCrystal library doesn’t work correctly. I just replaced it by using setCursor() to go to the first position of the first line and writing out 16 spaces, then moving to the second line and doing the same.

    • We discovered that your fork works best with our version of the OLED display. We’ve linked to it on the product page and in the hookup guide.

      Anyone experiencing the ‘ax ax’ problem should use this version of the library instead.

      • Just an update: I added a backwards compatibility option to the OLED library. This is mainly for Adafruit’s version of the OLED display from Winstar, but it defaults to the newest version which is what you have already determined works best for your display.

        Adafruit has merged my pull request, so these changes are in their master lib now. You can choose to keep linking to my fork for stability, or link to their master for changes that may come in the future (good or bad). Thanks!

      • Awexome to hear that this is helping you guys out ;-)

    • Thanks for this! I was getting the “ax ax” and then random junk, the extra init line from the PR fixed things.

  • Any plans for additional colors? White on black would be awesome.

  • +1 Serial Interface!!!!!!!!!!!

  • Sparkfun: Any chance you will have a 20x4 of one of these soon?

    Anyone know where to find a 20x4 of this?

  • whats the difference in driving these? the datasheet is useless and i can’t find any data on the RS0010 chipset …. i want to use this for an ARM project of mine

    i take it there not drop in replacements by the description but can they be with code modification?

  • I only buy the serial versions of these displays as I hate using six pins for what should be simple. Will you create a serial version of this? I like the look and would use one if it was serial.

  • Note to those who wish to write to the module with SPI, 10 bits must be sent with the first two set up for command/data and read/write followed by the data/command byte, but more can be sent as long as the first 10 are correct. This allows for easy communications with processors that have built-in SPI modules; set SPI for 16 bits and left-justify the 10-bit word to the OLED module and send.

  • I just made a Arduino code for this display. I enabled serial mode by changing the jumpers on the back. 3-PIN SPI serial mode can be enabled by: * Removing the L_CS_H 0-ohm resistor and placing it on JCS * Moving L_PS_H from PS_H to PS_L

    The datasheet for the RS0010 is really bad and I had a few problems along the way. But the display looks really nice, crisp, clear and fast. It is also dimmable in one step. By disabling the DC-DC converter in software the light output is quite low but nice in low light conditions. I used the datashet from newhaven tp find jumper settings. And the dataheet from electronic assembly for more detailed reference. It is much better formatted.

    All these displays are essentially the same.

    The code below is just a crude test that works. Some more testing on clock phase and timing should be done.

    const int SS_pin = 8; // connect to OLED pin 16 const int SCK_pin = 13; // connect to pin OLED 12 const int MISO_pin = 12; // can be connected to OLED 13 (not tested) const int MOSI_pin = 11; // connect to pin OLED 14

    void setup() { //OLED digitalWrite(SCK_pin, HIGH); // SCK high digitalWrite(SS, HIGH); // Start with SS high pinMode(SS_pin, OUTPUT); pinMode(SCK_pin, OUTPUT); pinMode(MISO_pin, INPUT); pinMode(MOSI_pin, OUTPUT); // Init of SERIAL OLED returnValue = bitBang(0,0x39); // Transmit data returnValue = bitBang(0,0x08); // Transmit data returnValue = bitBang(0,0x06); // Transmit data returnValue = bitBang(0,0x17); // Transmit data returnValue = bitBang(0,0x01); // Transmit data returnValue = bitBang(0,0x02); // Transmit data returnValue = bitBang(0,0x0C); // Transmit data }

    byte bitBang(byte control, byte data) // This function is what bitbangs the data { digitalWrite(SCK_pin, HIGH); // SCK high digitalWrite(SS_pin, LOW); // SS low byte receive = 0; int send=(control*256)+data;

    for(int i=9; i>= 0; i–) // I want to send 10 bits. The 6 MSB are removed { digitalWrite(MOSI_pin, bitRead(send, i)); // Set MOSI delayMicroseconds(5); digitalWrite(SCK_pin, LOW); // SCK high bitWrite(receive, i, digitalRead(MISO_pin)); // Capture MISO digitalWrite(SCK_pin, HIGH); // SCK low delayMicroseconds(5); } digitalWrite(SS_pin, HIGH); // SS high again return _receive; // Return the received data }

  • Does anyone happen to know if this viewable in daylight?

  • How can I rotate the text (hooked up to an arduino Yun)?

    • Unfortunately its not that easy. The chipset does allow you to control each individual pixel, but to rotate the text you will basically have to create your own rotated font. Check around online, there are plenty of examples of people controlling each pixel and probably people using custom fonts.

  • Where can I find a list of commands that this display works with? I’m new to displays, so I don’t know any of the commands. If they are the same commands as for standard LED displays - where can I find a list for them??

    • You can either check the datasheet for the IC (which seems to be hard to find) or just use a prewritten library. You can also find a prewritten library and modify it to your needs, but it depends mostly on what you are trying to do. Also, feel free to email

  • Regarding a serial interface for this - the backpack part of the Serial Enabled LCD Kit works great for this. This backpack works where others fail, since it’s essentially just an Arduino - just load the good library on to it (thank you Technobly!) and start showing stuff. Trouble is, that kit includes an LCD too - please make a kit with this OLED and that backpack! We could be looking at the first serial-enabled character OLED on the market :)

  • It says working lifetime is 100,000 hours. How does that compare to a standard LCD module?

  • Anyone had luck running these at 3.3V?

  • I would like to see and then order the Basic16x2 Character OLED - White on Black 5V Serial in the same form factor as the 5V serial LCD devices that Sparkfun sells.

  • DO NOT Expect this product to work with the standard Arduino LCD library, you will have to do some research to figure out how to get this working.

    • This actually worked for me. I just plugged in the OLED in place of a standard 5V LCD and it worked like magic. The only thing I found that didn’t work was the clear() function.

    • or just check out the hookup guide link above. we tell you how to do it.

  • I’d like to see a datasheet for the RS0010. Does it/this have any brightness levels other than maximum and off?… The driver code is a bit badly commented (mostly the initialization reads like an objdump… “// Missing step from doc.” well what does it do? what doc?) and doesnt seem to have any brightness control other than the display on/off.

  • Serial interface please! Never used the non-serial displays, but only use the serial displays.

  • I have been using OLED displays (16x2 and 20x4) in my projects for over a year. I use OLED character displays from NewHaven Displays ( and an I2C LCD/OLED interface board from Akafugu (

  • another vote for 20x4 serial (i2c).

  • Combining two previous comments, I’d like to see a serial 20x4 version. Please!

  • Hi there, I have an application for one of these, yet the characters mus be reversed as a mirror will be used to look at the display… do you think reversing the display is feasible in some way? It sounds simple yet it might not be… thanks!

    • The easiest solution, if possible in your constraints, is to use two mirrors to flip the display and flip it back.

    • You can do it, but not easily. You’d need to upload custom character bitmaps that are all of the normal characters but reversed (see the chipset datasheet on how to do this, it’s not trivial). You’d also need to write your new characters right-to-left instead of left-to-right. Given all the work required, it might be easier to use two mirrors. ;) Good luck!

Customer Reviews

5 out of 5

Based on 3 ratings:

5 star
4 star
3 star
2 star
1 star

2 of 2 found this helpful:

Bright and Clear

This is a great display and is very bright. There is no adjustment for contrast and what you see on the site is the same as you will see with your project. I am running mine at 3.3v and it works perfect so even though it state 5v it works perfect at the lower voltage.

The hookup guide and other information provided is fantastic for the person just getting started.

I would like to see a 20x4 of this same display and maybe some other color options available but I still have no complaints and will use this in more projects going forward.

Nice product

It works as described. Looks good.

My all-time favorite 16x2 display

This display is so much easier to read than normal LCD 16x2 displays. There are a couple of versions of the OLED part floating around, one with cyan lettering, and this one with yellow lettering. This one looks much better IMHO.

The hookup guide instructs you to download an Adafruit library to drive it, and that’s not a bad idea… but I was able to get it to work with the Arduino’s stock LiquidCrystal library.

This is a great upgrade for any project that needs a 16x2 display.