OLED
Interfacing SSD1306 0.96" OLED with Arduino Uno
What is the SSD1306 0.96" OLED?
The SSD1306 drives a 0.96-inch monochrome OLED panel at 128x64 pixels over I2C (an SPI variant also exists, but the 4-pin I2C module is what most people reach for first). Unlike character LCDs, every pixel is individually addressable, so you can draw shapes, plot graphs, show custom fonts and icons, and scroll bitmap animations — not just fixed-width text.
Because OLED pixels are individually lit rather than backlit through a filter, contrast is excellent and there's no potentiometer to fiddle with like on character LCDs. The tradeoff is a bit more setup: you need both Adafruit's GFX library (the generic drawing engine) and the SSD1306-specific driver on top of it, and the API is graphics-oriented (draw calls + a buffer you flush to the screen) rather than the simple print() calls a character LCD uses.
Specifications
| Display | 128 × 64 pixels, monochrome OLED |
| Operating voltage | 3.3V – 5V (most breakout modules have an onboard regulator) |
| Interface | I2C (this module); SPI variants also exist on other boards |
| I2C address | 0x3C default on most modules, 0x3D on some — scan to confirm |
| Viewing technology | Self-emissive OLED — high contrast, no backlight, wide viewing angle |
| Driver + graphics library | Requires Adafruit GFX (drawing engine) plus the Adafruit SSD1306 driver on top of it |
SSD1306 0.96" OLED Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground |
| 2 | VCC | Power, 3.3V–5V DC depending on the module's onboard regulator |
| 3 | SCL | I2C clock line |
| 4 | SDA | I2C data line |
Pin order varies more between SSD1306 modules than most parts — some print GND/VCC/SCL/SDA left to right, others VCC/GND/SCL/SDA. Always check the silkscreen labels on your specific board rather than assuming pin position. Unlike the character-LCD backpacks, most SSD1306 breakouts genuinely work fine at 3.3V, making them an easier fit for ESP32/Pi/STM32 without the 5V-rail workarounds those LCDs need.
Setting Up SSD1306 0.96" OLED with Arduino Uno
Library
Adafruit SSD1306 by Adafruit
Arduino IDE → Tools → Manage Libraries → search "Adafruit SSD1306" → Install (accept the prompt to also install "Adafruit GFX Library")
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC | 5V | Most modules accept 5V and regulate down internally; 3.3V also works on most boards. |
| GND | GND | — |
| SDA | A4 | Uno's hardware I2C data pin. |
| SCL | A5 | Uno's hardware I2C clock pin. |
Example code
[]
Related Components
Related Guides & Projects

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.