Reference
SSD1306
128x64 OLED display.
- Connects over
- I²C
- Address
- 0x3C (or 0x3D)
- Made by
- Solomon Systech
- Datasheet
- cdn-shop.adafruit.com
Use it
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
| Pin | Connect to |
|---|---|
VCC | 3.3V ONLY — 5V damages the chip |
GND | Ground |
SDA | Pull-up to 3.3V |
SCL | Pull-up to 3.3V |
RST | Reset (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).