Basic 16x2 Character OLED - Yellow on Black

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.

Basic 16x2 Character OLED - Yellow on Black Product Help and Resources

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels

Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #568710 / about 7 years ago / 1

    A side question, not specifically about this display: Is there a reason why you can't get (or at least I've not been able to find a single one) true yellow LCD displays like this OLED? The only "yellow" LCDs that are available are really a green/yellow, and none are actually yellow like these OLEDs.

  • Member #847080 / about 8 years ago / 1

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

  • Member #81294 / about 8 years ago / 1

    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?

    • M-Short / about 8 years ago / 1

      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.

  • jriley / about 11 years ago / 5

    +1 on the serial interface!

  • Technobly / about 11 years ago / 3

    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.

    • Joel_E_B / about 11 years ago / 1

      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.

      • Technobly / about 11 years ago / 1

        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!

      • Technobly / about 11 years ago / 1

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

    • monkeyiq / about 11 years ago / 1

      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.

  • GaretBiglow / about 11 years ago / 2

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

  • Member #234799 / about 11 years ago / 2

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

    Anyone know where to find a 20x4 of this?

  • BiOzZ420 / about 11 years ago / 2

    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?

  • alohawild / about 11 years ago / 2

    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.

  • Member #684683 / about 9 years ago / 1

    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.

  • Member #670194 / about 9 years ago * / 1

    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 }

  • RunWreckRi0t / about 9 years ago / 1

    Does anyone happen to know if this viewable in daylight?

  • Member #336714 / about 10 years ago / 1

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

    • M-Short / about 10 years ago / 1

      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.

  • Member #168645 / about 10 years ago / 1

    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??

    • M-Short / about 10 years ago / 1

      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

  • PickledDog / about 10 years ago / 1

    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 :)

  • DAS01 / about 10 years ago / 1

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

  • monkeyiq / about 11 years ago / 1

    Anyone had luck running these at 3.3V?

  • Member #90983 / about 11 years ago / 1

    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.

  • Member #457363 / about 11 years ago / 1

    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.

  • urjaman / about 11 years ago / 1

    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.

  • Member #90983 / about 11 years ago / 1

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

  • Member #322759 / about 11 years ago / 1

    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 (

  • Member #182997 / about 11 years ago / 1

    another vote for 20x4 serial (i2c).

  • Steven_V / about 11 years ago / 1

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

  • Member #24151 / about 11 years ago / 1

    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!

    • Member #158063 / about 11 years ago / 1

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

    • MikeGrusin / about 11 years ago / 1

      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:

Currently viewing all customer reviews.

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.