Product Overview
The 1.3-inch I2C OLED Display Module is a compact, high-contrast monochrome screen designed for embedded projects requiring crisp visual output without consuming excessive power or I/O pins. Powered by the SH1106 driver IC and featuring a sharp 128×64 pixel resolution, this display delivers vibrant text, detailed graphics, and custom icons in either striking blue or clean white .
Unlike traditional LCDs that require a power-hungry backlight, OLED (Organic Light Emitting Diode) technology allows each pixel to emit its own light. This self-emissive design provides true blacks (inactive pixels are completely off), an exceptional 10,000:1 contrast ratio, and >160° viewing angles – ensuring the display remains readable from almost any angle .
The module uses the 4-pin I2C interface (VCC, GND, SCL, SDA), requiring only two data lines to connect to your microcontroller. This preserves valuable I/O pins for other sensors and peripherals . With support for both 3.3V and 5V logic, it is directly compatible with Arduino, ESP32, ESP8266, Raspberry Pi, STM32, and most other development boards – no level shifters required .
Key Features
-
1.3-Inch Active Area: Larger than 0.96″ OLEDs, offering 34.5mm × 19mm display area for better readability
-
128×64 Pixel Resolution: High-definition display with 128 columns and 64 rows – capable of showing detailed graphics, bitmaps, and up to 8 lines of small text
-
SH1106 Driver IC: Industry-standard controller with built-in 132×64-bit SRAM buffer (supports 128×64 active area)
-
I2C Interface: 2-wire communication requires only 2 data lines (SCL and SDA) – saves valuable I/O pins
-
Wide Voltage Compatibility: Operates on 3.3V–5V DC, compatible with both 5V (Arduino) and 3.3V (ESP32/ESP8266) logic
-
Ultra-Low Power Consumption: Uses approximately 0.04W (typical operation) – no backlight means lower battery drain
-
Wide Viewing Angle: >160° visibility ensures clear readouts from almost any angle without contrast shift
-
Wide Operating Temperature: Rated for -40°C to +85°C, suitable for industrial and outdoor applications
-
Self-Emitting OLED Technology: True blacks with 10,000:1 contrast ratio – superior readability in all lighting conditions
Technical Specifications
Pinout & Connection Guide
The 4-pin I2C interface is extremely simple – perfect for beginners and rapid prototyping.
I2C Pin Mapping for Common Development Boards
Wiring Diagram (Arduino Uno)
OLED Module → Arduino Uno
─────────────────────────────────────
VCC → 5V
GND → GND
SCL → A5
SDA → A4
SH1106 vs SSD1306: Important Note
Unlike 0.96″ displays that typically use the SSD1306 driver, 1.3″ OLEDs generally use the SH1106 driver . While both are excellent drivers, they have a key difference:
This means you cannot use an SSD1306 library with an SH1106 display without modifications. Use libraries that explicitly support SH1106, such as:
-
Adafruit_SH1106 (esp. for 128×64 displays)
-
U8g2 library (supports both SH1106 and SSD1306)
-
SparkFun Qwiic OLED Library (for 1.3″ displays)
Usage Guide (Arduino IDE)
Step 1: Install Required Libraries
You need two libraries – one for graphics and one for the SH1106 driver.
Option A: Adafruit SH1106 (Recommended for SH1106)
-
Open Arduino IDE → Sketch → Include Library → Manage Libraries
-
Search for and install:
Option B: U8g2 (Multi-driver support)
Step 2: I2C Address Verification
Most 1.3″ I2C OLED modules use address 0x3C (0x78 write, 0x79 read) . Run this scanner to verify:
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("I2C Scanner");
}
void loop() {
byte error, address;
int nDevices = 0;
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if(error == 0) {
Serial.print("I2C device found at address 0x");
if(address < 16) Serial.print("0");
Serial.println(address, HEX);
nDevices++;
}
}
if(nDevices == 0) Serial.println("No I2C devices found");
delay(5000);
}
Step 3: Basic Test Sketch (Adafruit SH1106 – Recommended)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SH1106 display(OLED_RESET);
void setup() {
Serial.begin(9600);
if(!display.begin(SH1106_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SH1106 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(10, 25);
display.println("1.3 OLED");
display.println("Ready!");
display.display();
}
void loop() {
}
Step 4: Alternative using U8g2 Library (More Font Options)
#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);
void setup() {
u8g2.begin();
u8g2.enableUTF8Print();
}
void loop() {
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.drawStr(0, 20, "1.3 OLED!");
u8g2.drawStr(0, 40, "128x64");
u8g2.drawStr(0, 60, "SH1106");
} while ( u8g2.nextPage() );
delay(1000);
}
Understanding the Display Buffer Workflow
Most OLED libraries use a buffer-based drawing system:
-
Drawing functions write to an in-memory buffer (not directly to the screen)
-
You must call display.display() (Adafruit) or u8g2.nextPage() (U8g2) to transfer the buffer contents to the actual OLED panel
This double-buffering technique prevents screen flicker and allows you to build complex frames efficiently.
Power Management for Battery-Powered Projects
OLED displays are excellent for low-power applications because only lit pixels consume power .
Power-Saving Tips:
-
Update the display only when values change rather than continuously refreshing
-
Use display.ssd1306_command(SSD1306_DISPLAYOFF) to turn the display OFF when not actively needed
-
Avoid displaying large white or high-density areas continuously to maximize battery life
Q: What is the difference between the 1.3" and 0.96" OLED displays?
The 1.3″ version has a larger active area (29.42mm × 14.7mm vs 21.74mm × 10.86mm) while maintaining the same 128×64 resolution, resulting in larger, more readable pixels. Additionally, the 1.3″ typically uses the SH1106 driver, while 0.96″ uses SSD1306 .
Q: Can I use an SSD1306 library with this SH1106 display?
Generally no – the SH1106 has different internal RAM organization (132×64 vs 128×64). Use libraries that explicitly support SH1106, such as Adafruit_SH1106, U8g2, or SparkFun Qwiic OLED Library .
Q: What is the default I2C address for this display?
The default I2C address is 0x3C (write: 0x78, read: 0x79) . Some modules may be configurable for 0x3D via resistor modification.
Q: How many characters can the display show?
With the default 8×8 pixel font, approximately 16 characters × 8 lines = 128 characters total. With larger fonts (e.g., 16×16 pixels), about 8 characters × 4 lines = 32 characters.
Q: What is the lifespan of the OLED display?
Rated lifespan is approximately 20,000-30,000 hours of continuous operation (about 2.5-3.5 years). Avoid displaying static images for extremely long periods to prevent uneven pixel wear .
Q: Why does my display stay blank after power-up?
Check these common issues:
-
Wiring – verify VCC→5V (or 3.3V), GND→GND, SCL→A5, SDA→A4
-
Use the correct SH1106 library (not SSD1306 library)
-
Confirm I2C address (run I2C scanner – should be 0x3C)
-
Ensure display.display() is called after drawing commands
Q: Can I use both 3.3V and 5V logic?
Yes, the module is designed with a wide voltage range of 3.3V–5V. It works with both 5V (Arduino) and 3.3V (ESP32/ESP8266) microcontrollers .
Q: Can I use this display with ESP32 or ESP8266?
Yes. Use 3.3V power. Connect SDA to GPIO21 (ESP32) or GPIO4 (ESP8266), and SCL to GPIO22 (ESP32) or GPIO5 (ESP8266). The same libraries work on these platforms.
Q: Does this module have a reset pin?
This 4-pin I2C version does not have a separate reset pin; the SH1106 is reset through I2C commands. In code, set OLED_RESET to -1 for no hardware reset connection .
Q: How much current does the display draw?
Power consumption depends on how many pixels are lit:
-
Typical text/dashboard (~25% pixels lit): ~8-12mA
-
Full screen white: ~20-25mA
-
Display off (standby): <10µA
Q: Can I adjust the display brightness?
The SH1106 supports contrast adjustment through library commands. In Adafruit library, use display.setContrast(value) where value ranges from 0 to 255.
Q: What can I build with this 1.3" OLED display?
Popular applications include:
-
IoT sensor stations: Display temperature, humidity, and pressure
-
Smart home control panels: System status and device controls
-
Data loggers: Real-time sensor data visualization
-
Diagnostic tools: Battery testers and instrument displays
-
Menu interfaces: Handheld device navigation