The SSD1306 OLED, manufactured by RIDEN (Part ID: SSD1306), is a versatile monochrome display driver designed for OLED screens. It is widely used in embedded systems due to its compact size, low power consumption, and high contrast display. The SSD1306 supports resolutions such as 128x64 pixels and offers communication via I2C or SPI interfaces, making it an excellent choice for microcontroller-based projects.
Parameter | Value |
---|---|
Manufacturer | RIDEN |
Part ID | SSD1306 |
Display Type | Monochrome OLED |
Resolution | 128x64 pixels (typical) |
Communication Interface | I2C or SPI |
Operating Voltage | 3.3V to 5V |
Operating Temperature | -40°C to +85°C |
Power Consumption | ~0.08W (typical) |
Dimensions | Varies by module (e.g., 0.96") |
Pin Name | Pin Number | Description |
---|---|---|
GND | 1 | Ground (0V reference) |
VCC | 2 | Power supply (3.3V or 5V) |
SCL | 3 | Serial Clock Line for I2C communication |
SDA | 4 | Serial Data Line for I2C communication |
Pin Name | Pin Number | Description |
---|---|---|
GND | 1 | Ground (0V reference) |
VCC | 2 | Power supply (3.3V or 5V) |
SCK | 3 | Serial Clock Line for SPI communication |
MOSI | 4 | Master Out Slave In (data input) |
CS | 5 | Chip Select (active low) |
DC | 6 | Data/Command control pin |
RES | 7 | Reset pin (active low) |
VCC
pin to a 3.3V or 5V power source and the GND
pin to ground.SCL
and SDA
lines.#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Define the OLED display dimensions
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Create an SSD1306 object with I2C address 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Initialize the OLED display
if (!display.begin(SSD1306_I2C_ADDRESS, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Halt execution if initialization fails
}
// Clear the display buffer
display.clearDisplay();
// Display a welcome message
display.setTextSize(1); // Set text size
display.setTextColor(SSD1306_WHITE); // Set text color
display.setCursor(0, 0); // Set cursor position
display.println(F("Hello, SSD1306!"));
display.display(); // Render the text on the screen
delay(2000); // Wait for 2 seconds
}
void loop() {
// Example: Draw a rectangle on the screen
display.clearDisplay(); // Clear the display buffer
display.drawRect(10, 10, 50, 30, SSD1306_WHITE); // Draw a rectangle
display.display(); // Render the rectangle on the screen
delay(1000); // Wait for 1 second
}
Display Not Turning On:
VCC
and GND
).No Output on the Screen:
0x3C
) is used in the code.Flickering or Unstable Display:
Burn-In or Ghosting:
Q: Can the SSD1306 OLED work with 5V microcontrollers?
A: Yes, the SSD1306 module typically includes a voltage regulator and level shifters, allowing it to work with both 3.3V and 5V systems. However, always check the specific module's datasheet.
Q: How do I find the I2C address of my SSD1306 module?
A: Use an I2C scanner sketch on your microcontroller to detect the address. The default is usually 0x3C
or 0x3D
.
Q: Can I use the SSD1306 OLED with Raspberry Pi?
A: Yes, the SSD1306 is compatible with Raspberry Pi. Use libraries like luma.oled
for Python to control the display.
Q: What is the maximum resolution supported by the SSD1306?
A: The SSD1306 supports resolutions up to 128x64 pixels. For higher resolutions, consider other display drivers.