← Alle Bauteile

OLED Display SSD1306 (0.96 Zoll)

Aktuator

Kleines selbstleuchtendes OLED-Display mit 128x64 Pixeln. Anders als ein LCD braucht es keine Hintergrundbeleuchtung — jeder Pixel leuchtet selbst. Daher hat es einen sehr guten Kontrast und ist auch im Dunkeln gut ablesbar. Kommuniziert ueber I2C.

Tipps: Standard-Adresse ist 0x3C (manchmal 0x3D). Das Display arbeitet mit einem Framebuffer: Man schreibt erst in den Speicher und uebertraegt dann mit display.display() auf den Bildschirm. Ein schwarzer Bildschirm nach dem Einschalten ist KEIN Fehler — es muss erst etwas gezeichnet werden!
Frag den Lernhelfer

Technische Daten

KategorieDisplay/Anzeige
SchnittstelleI2C
PinbelegungVCC, GND, SCL, SDA
Anzahl Pins4
Messbereich128 x 64 Pixel, monochrom
Betriebsspannung3.3V – 5.0V
Stromverbrauch20.0 mA
DatenblattPDF oeffnen

Anschluss

Arduino Uno R3

Pins: 5V oder 3.3V=VCC, GND=GND, A5=SCL, A4=SDA

Hinweise: I2C-Adresse 0x3C (Standard). SDA und SCL sind beim Uno fest auf A4/A5. Mehrere I2C-Geraete koennen an denselben Pins haengen.

Codebeispiele

OLED Display: Text und Grafik anzeigen Mittel

Das OLED-Display wird ueber I2C angesteuert. Zuerst initialisieren wir es, dann zeichnen wir Text und einfache Grafiken in den Framebuffer. Erst display.display() macht alles sichtbar.

Benoetigte Bibliotheken: Adafruit_SSD1306.h, Adafruit_GFX.h, Wire.h (im Library Manager suchen: 'Adafruit SSD1306')

// ============================================
// OLED SSD1306: Text und Grafik anzeigen
// ============================================
// Anschluss (I2C): VCC=5V, GND=GND, SCL=A5, SDA=A4

#include <Wire.h>              // I2C-Kommunikation
#include <Adafruit_GFX.h>      // Grafik-Grundfunktionen
#include <Adafruit_SSD1306.h>  // Display-Treiber

// Display-Einstellungen
#define BREITE 128             // Pixel horizontal
#define HOEHE 64               // Pixel vertikal
#define OLED_ADRESSE 0x3C      // I2C-Adresse (0x3C oder 0x3D)

// Display-Objekt erstellen
// &Wire = I2C-Bus, -1 = kein Reset-Pin
Adafruit_SSD1306 display(BREITE, HOEHE, &Wire, -1);

void setup() {
  Serial.begin(9600);
  Wire.begin();                // I2C starten

  // Display initialisieren
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADRESSE)) {
    Serial.println("FEHLER: OLED nicht gefunden!");
    Serial.println("Pruefen: Verkabelung, I2C-Adresse (0x3C oder 0x3D?)");
    while (true);  // Stopp bei Fehler
  }

  Serial.println("OLED gefunden!");

  // === Bildschirm loeschen ===
  display.clearDisplay();

  // === Rahmen zeichnen (Test ob Display geht) ===
  display.drawRect(0, 0, 128, 64, SSD1306_WHITE);

  // === Text anzeigen ===
  display.setTextColor(SSD1306_WHITE);  // Weisser Text

  // Grosse Schrift
  display.setTextSize(2);        // 2x Groesse
  display.setCursor(10, 10);     // Position (x, y)
  display.print("Arduino");

  // Kleine Schrift
  display.setTextSize(1);        // Normale Groesse
  display.setCursor(10, 40);
  display.print("Sensor-Datenbank");

  // === Alles auf den Bildschirm uebertragen ===
  display.display();

  delay(3000);  // 3 Sekunden anzeigen
}

void loop() {
  // Laufende Anzeige: Sekunden zaehlen
  display.clearDisplay();

  display.setTextSize(1);
  display.setCursor(0, 0);
  display.print("Laufzeit:");

  display.setTextSize(3);
  display.setCursor(10, 25);
  unsigned long sek = millis() / 1000;
  display.print(sek);
  display.setTextSize(1);
  display.print(" sek");

  display.display();
  delay(1000);
}

Haeufige Probleme

OLED bleibt komplett schwarz

Symptom: Keine Anzeige, auch kein Flackern beim Einschalten

Ursache: Falsche I2C-Adresse, SDA/SCL vertauscht, oder Display nicht initialisiert

Loesung:

1. I2C-Scanner laufen lassen (Datei > Beispiele > Wire > i2c_scanner) 2. Angezeigte Adresse im Code eintragen (0x3C oder 0x3D) 3. SDA an A4 und SCL an A5? (Beim Uno fest!) 4. VCC und GND pruefen 5. WICHTIG: Ein schwarzer Bildschirm ist bei OLED normal — erst nach display.display() erscheint etwas!

Vermeidung: Immer zuerst den I2C-Scanner laufen lassen.

OLED zeigt nur Pixelmuell/Rauschen

Symptom: Zufaellige Pixel leuchten, kein erkennbarer Text

Ursache: Display nicht richtig initialisiert oder falscher Display-Typ im Code

Loesung:

1. Stimmt die Aufloesung im Code? (128x64 oder 128x32?) 2. display.clearDisplay() vor dem Zeichnen aufrufen 3. Richtige Bibliothek installiert? (Adafruit SSD1306, NICHT SH1106) 4. Arduino neu starten (Reset-Knopf)

Vermeidung: Aufloesung des Displays pruefen (steht meist auf der Rueckseite).

Probleme mit OLED Display SSD1306 (0.96 Zoll)?

KI-Lernhelfer fragen