OLED 128×64

A 0.96-inch monochrome OLED with 128x64 pixels driven by the SSD1306 controller over a 4-wire I2C bus.

OLED 128×64: Monochrome I²C display

What is the OLED 128×64?

The OLED 128x64 is a small self-emissive display module built around Solomon Systech's SSD1306 controller. Each of its 128 by 64 pixels is an individual organic LED, so the panel produces light directly and needs no backlight. That gives it high contrast and wide viewing angles while keeping the board thin at roughly 3.5 mm deep.

The module talks over I2C using just four pins: GND, VCC, SCL, and SDA. It responds at address 0x3C by default (a hardware option shifts it to 0x3D on some boards). The SSD1306 contains an internal charge pump that generates the higher voltage the OLED panel needs, so the board runs from a single logic supply and accepts 3.3V to 5V. On-board pull-up resistors sit on the SCL and SDA lines, so a single module needs no external pull-ups.

Inside the controller is 1 KB of Graphic Display Data RAM organized as 8 pages of 128 bytes, mapping one bit to each pixel. Brightness is set through a 256-step contrast register. Libraries such as Adafruit_SSD1306 and U8g2 buffer the full frame in the microcontroller and push it to this RAM. In Tinkered the display is fully simulated, so sketches that draw text and graphics render live on the 3D part.

OLED 128×64 pinout

PinFunctionType
GND GNDPowerPower in
VCC VCC (3.3-5V)PowerPower in
SCL SCLI²C SCLBidirectional (GPIO)
SDA SDAI²C SDABidirectional (GPIO)

Specifications

Operating voltage
3.3 V (max 5 V)
Interface
I²C
I²C address
0x3C
I²C pull-ups
On-board (no external resistors)
Dimensions
27.3 × 27.8 × 3.5 mm

Verified from the Tinkered component library.

Circuit requirements

  • Wire SDA and SCL to the host's I2C pins: A4 (SDA) and A5 (SCL) on the Arduino Uno and Nano, or pin 20 (SDA) and 21 (SCL) on the Mega.
  • Power VCC from 3.3V or 5V and tie GND to the shared ground. The SSD1306's internal charge pump derives the panel drive voltage, so no separate high-voltage rail is needed.
  • The module carries its own SCL and SDA pull-up resistors, so external pull-ups are not required for one display; adding several pull-up equipped modules on the same bus can over-load the lines.
  • The 4-pin I2C module has no broken-out reset or D/C pin. Reset and the charge-pump enable (command 0x8D, 0x14) are handled by the initialization sequence in the driver library.
  • Confirm the I2C address in your sketch matches the board: 0x3C is standard, but some units are configured for 0x3D.

Board compatibility

The OLED 128×64 connects to any of the microcontrollers supported in Tinkered. Mind the 3.3 V logic level on 3.3 V boards.

Simulate the OLED 128×64 in your browser

The OLED 128×64 is fully simulated in Tinkered. Wire it into a circuit, write your firmware, and read real values back with no physical hardware. Test your logic before you touch a breadboard.

Open it in the simulator

Common OLED 128×64 mistakes

Wrong I2C address

A blank screen is most often an address mismatch. The default is 0x3C, but some modules ship at 0x3D. Run an I2C scanner to confirm, then pass the detected address to begin().

Confusing it with an SH1106 module

Look-alike 0.96 and 1.3-inch boards use the SH1106 controller, which has a 132-column RAM with a 2-pixel offset. Driving an SH1106 with an SSD1306 library produces shifted or garbled output, and vice versa.

Forgetting to push the buffer

Buffered libraries draw into RAM on the microcontroller, not the panel. Nothing appears until you call display() (or its equivalent) to transfer the frame to the SSD1306's GDDRAM.

Running out of SRAM

A full 128x64 monochrome frame buffer is 1 KB. On small AVRs that is half of an Uno's 2 KB of SRAM, which can leave too little for the rest of the sketch and cause resets or corrupted output.

Swapping SDA and SCL

The four pins are easy to cross. If VCC and GND are correct but the display stays dark, verify SDA goes to the data line and SCL to the clock line rather than the reverse.

OLED 128×64 datasheet

Official OLED 128×64 datasheet

Popular OLED 128×64 projects

Sensor readout dashboard

Show live temperature, humidity, or distance from an I2C or analog sensor as text and simple bar graphs on the OLED.

Digital clock and timer

Pair the display with an RTC to render a large-font clock, countdown timer, or alarm status.

System status monitor

Display CPU load, memory, or network stats streamed from a host over serial as a compact always-on panel.

Menu-driven UI

Combine the OLED with a rotary encoder or buttons to build a scrollable settings menu for a larger project.

Tiny games and animations

The fast I2C refresh supports simple games like Pong or Snake and looping bitmap animations.

Build with the OLED 128×64.

Drop the OLED 128×64 into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.