Raspberry Pi: OLED Display

These cute displays have barely enough dots for the job:

RPi OLED Display - Classical
RPi OLED Display – Classical

That’s a 0.96 inch = 24.4 mm OLED display, measured diagonally, with a breathtaking 8192 = 128×64 dots. It’s a binary display: on or off pixels, nothing in between. This is not a color display: what you see is what it does, with a two-pixel void between the yellow and blue sections.

The void is a physical separation that does not affect the display addressing: the yellow section has 16 rows, the blue section has 48. It’s your responsibility to keep things where they belong; a character descender from the yellow section will appear in the blue section.

They’re three bucks each, shipped halfway around the planet: search eBay / Amazon for oled 128x64 yellow. The all-blue and all-white versions do not have the two-pixel void. I have some white 1.3 inch versions on the way for those applications requiring 35% more visibility.

The SPI interface uses all seven wires, peeled from a premade 100 mm 40-pin cable with female pin connectors:

RPi OLED Display - Wiring
RPi OLED Display – Wiring

Other OLED versions have a four-wire I2C interface. The boards have option jumpers on the back, but the pin header along the edge will have 7 holes for SPI or 4 holes for I2C .

Caveat emptor for online buyers: the item picture(s) may not match the title or the description text. The low-end sellers carrying beach balls, cookware, MOSFETs, cheap consumer electronics, and OLEDs do not understand the tech on a small board that’s Just Another SKU among thousands.

For cables, search eBay or Amazon for ribbon dupont "female to female" 10cm. Amazon has sets of male-female, male-male, and female-female jumpers for ten bucks in various lengths. The insulation seems rather stiff and I may be forced to build better cables with fine wire inside PET braid.

The SPI interface soaks up a tidy block of pins on the RPi’s big header:

RPi OLED Display - RPi connector detail
RPi OLED Display – RPi connector detail

The LUMA-OLED Python driver doc gives a useful summary of those connections, herewith extracted for future reference:

  • 17 VCC – 3.3 V works for sure, 5 V might not
  • 18 DC – Data/Command
  • 19 D1 (“dee one”) – Data to display = MOSI
  • 20 GND
  • 21 not used, that’s the pin in the midst of the block
  • 22 RST – Reset
  • 23 D0 (“dee zero”) – clock to display = SCLK
  • 24 CS – Chip Select = CE0 (“cee ee zero”)

Pin 1 is in front on the left end of that picture, closest to the MicroSD card slot, and proceeds 1-2, 3-4, and so forth along the length of the connector: odds toward the CPU, evens toward the PCB edge.

The LUMA-OLD maintainter must have OLED boards with a slightly different SPI pinout than mine: VCC and GND are interchanged. Caveat emptor!

Obviously, it’s desperately in need of a cute little case, which is in the nature of fine tuning.


7 thoughts on “Raspberry Pi: OLED Display

  1. Technically, it is a color display, it’s just a fixed-color display, reminiscent of those old TV “color converters” that were just a sheet of plastic that was green on the bottom, pink in the middle, and blue on top. I quite like the idea, it does make a simple display with some visual appeal, but you do have to work within its constraints. I do wonder about the two rows of dead pixels: are they the transition range between blue and yellow OLED material, of an indeterminate color? If so, it would be interesting if it were wired (reminds me of the “mystery flavor” Dum Dum lollipops which were the transition between flavor batches).

    1. Maybe it’s a bichromatic display? [wince]

      The two colors come from two different organic materials, so the dead zone happens where the overlays butt against each other (or just barely don’t butt or whatever).

      Peering at the display under a strong light shows the row conductors skip the gap; I’m mildly surprised they have two different glass layouts for yellow-blue and only-blue displays. The SH1106 controller definitely has only 64 addressable rows, with no provision to gimmick the address around missing rows, so two different glass masks must be cheaper than two different flex cables.

      On the other paw, I cannot grasp the economies of scale that deliver a single display halfway around the planet for $3.

  2. 3 bucks

    Cool. We used to pay around 4-5 for them two years ago. I like the bi color type very much – with little effort you can make it seem like you actually have a color display :)

    Pro tip: bottom corners of the glass are unsupported so they break with moderate pressure. Since traces fan out in that region, you can end up with dead or half dead matrix (I have one where only the odd lines work).

Comments are closed.