Volt Docs

Reference

SSD1306

128x64 OLED display.

Connects over
I²C
Address
0x3C (or 0x3D)
Made by
Solomon Systech
Datasheet
cdn-shop.adafruit.com

Use it

main.volt
hardware {
    device ssd1306: SSD1306
}

every 1s {
    ssd1306.clear()
}

On its own, the declaration puts the SSD1306 on the first I²C bus (SDA 21, SCL 22 on the ESP32) at 0x3C. To choose the pins or the address, declare the bus and attach the device: device ssd1306: SSD1306 on i2c0 at 0x3D with i2c i2c0(sda: 21, scl: 22).

Methods

  • ssd1306.clear()

    Clear display

  • ssd1306.text(x: int, y: int, text: string)

    Draw text

  • ssd1306.show()

    Flush to display

Wiring

PinConnect to
VCC3.3V ONLY — 5V damages the chip
GNDGround
SDAPull-up to 3.3V
SCLPull-up to 3.3V
RSTReset (some breakouts auto-reset; tie high if free)

Specifications

Voltage
1.65V – 3.3V (NOT 5V tolerant on cheap modules; some have regulators)
Current
20 mA all pixels on, 7 μA off
Resolution
128 × 64 or 128 × 32
Interface
I²C, SPI (4-wire or 3-wire)

Tips

  • I²C version: address is usually 0x3C; very rarely 0x3D.
  • Burn-in is real — animate or sleep static screens after a few minutes.
  • Page mode is faster than horizontal mode for partial updates.

Alternatives worth knowing:

  • SH1106: Very similar — but framebuffer layout differs slightly (132 px wide internally).
  • SSD1309: Bigger version (2.42" / 128×64).