Arduino OLED Display Tutorial — I2C SSD1306 128×64
This Arduino OLED display tutorial is the starting point most makers search for before building clocks, sensor dashboards, or OLED animations. You will learn how to interface an OLED with Arduino over I2C, install the Adafruit SSD1306 library, show text and graphics, then move on to animated bitmaps — the same topics covered in popular guides on Random Nerd Tutorials and maker blogs, with a faster path to ssd1306 animation code at the end.
What is a 0.96 inch SSD1306 OLED?
The common 0.96 oled arduino module is 128×64 pixels, monochrome, driven by the SSD1306 chip. It uses only four wires (I2C): VCC, GND, SDA, SCL — far fewer than parallel displays. Variants include 128×32 and yellow/blue dual-color panels; code is similar with a height change.
Step 1: I2C wiring (Arduino Uno / Nano)
- VCC → 5V (many modules accept 3.3V–5V)
- GND → GND
- SDA → A4 (Uno/Nano) or GPIO 21 (ESP32)
- SCL → A5 (Uno/Nano) or GPIO 22 (ESP32)
I2C address is usually 0x3C; try 0x3D if the display stays blank. Use an I2C scanner sketch if unsure.
Step 2: Install libraries
In Arduino IDE → Library Manager, install:
- Adafruit GFX Library — text, lines, circles
- Adafruit SSD1306 — driver for the display
Alternative: U8g2 — excellent for u8g2 oled animation and compressed fonts.
Step 3: Hello World — text on OLED
Run the Adafruit SSD1306 example ssd1306_128x64_i2c. You should see text on the
128x64 oled arduino screen. Customize with setTextSize(),
setCursor(), and println() for labels and sensor values.
Step 4: Shapes and OLED display graphics
With GFX you can draw:
- Lines, rectangles, circles, triangles
- Filled shapes for UI elements and progress bars
- Custom icons via
drawBitmap()and PROGMEM arrays
This is the foundation for dashboards, menus, and oled display graphics projects.
Step 5: Scrolling text (popular project)
Scrolling text on OLED Arduino is a top beginner project: move a string across the screen by
shifting the cursor each frame in loop(). Adafruit’s library includes scrolling examples — adjust
speed with delay() or millis() for non-blocking code.
Step 6: Custom images and animations
To show a logo or custom image on oled arduino:
- Convert PNG to a byte array (image to byte array guide)
- Call
drawBitmap()insetup()orloop()
For multi-frame arduino oled animation, see our dedicated guides:
Faster path: OLED animation maker (no manual arrays)
Instead of hand-coding each frame, use the free OLED animation maker for Arduino — same workflow as create animations for Arduino tools like Wokwi Animator: choose templates, import GIF, preview, get the code. Exports Adafruit SSD1306, U8g2, or MicroPython.
Skip manual coding — use the free tool
100+ templates · GIF import · WebSerial preview · SSD1306 & SH1106
Open oledanimationmaker.com →FAQ
Which pins for I2C OLED on Arduino Uno?
SDA → A4, SCL → A5, plus power and ground.
SSD1306 vs SH1106 — which do I have?
See our SH1106 vs SSD1306 guide. Wrong driver = shifted image.
Topics: arduino oled display tutorial · interface oled with arduino · i2c oled arduino · 0.96 inch oled · adafruit ssd1306 tutorial · oled display graphics · scrolling text oled · arduino oled animation