Arduino Nano ESP32 - SSD1309 OLED-Display 128x64 | 2,42 Zoll I2C OLED-Anleitung
Dieses Tutorial enthält Anweisungen zur Verwendung des SSD1309 OLED 128×64 (2,42 Zoll / 2,4 Zoll) mit einem Arduino Nano ESP32 über die I2C-Schnittstelle und die DIYables_OLED_SSD1309-Bibliothek. Im Einzelnen werden wir lernen:
- Wie man das 2,42-Zoll-SSD1309-OLED mit Arduino Nano ESP32 über I2C verbindet
- Wie man Arduino Nano ESP32 programmiert, um Text und Zahlen auf dem SSD1309 OLED anzuzeigen
- Wie man Text vertikal und horizontal auf dem SSD1309 OLED zentriert
- Wie man geometrische Formen auf dem SSD1309 OLED zeichnet
- Wie man monochromatische Bitmap-Bilder auf dem SSD1309 OLED anzeigt
- Wie man Hardware-Scrolling in vier Richtungen verwendet
- Wie man den Kontrast anpasst und das Display abdunkelt
- Wie man benutzerdefinierte Schriftarten aus der Adafruit GFX-Schriftartsammlung verwendet

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über das SSD1309 2,42-Zoll-OLED-Display
Der SSD1309 ist ein CMOS-OLED-Treiber-IC für 128×64-Dot-Matrix-Panels. Er ist register-kompatibel mit dem SSD1306, daher können viele vorhandene Code-Beispiele mit minimalen Änderungen übertragen werden. Bemerkenswerte Hardware-Details:
- Keine eingebaute Ladungspumpe — der SSD1309 benötigt eine externe VCC-Schiene, aber praktisch alle Breakout-Boards (einschließlich 2,42-Zoll-Module) werden mit einem integrierten Boost-Konverter geliefert, was dies für den Benutzer transparent macht.
- Höhere Spannungstoleranz — der SSD1309 akzeptiert bis zu 16 V VCC, gegenüber der ~4,2 V-Grenze des SSD1306.
Die I2C-Kommunikation erfordert nur zwei Signalleitungen (SDA und SCL), und der Bus kann gleichzeitig mit anderen I2C-Peripheriegeräten gemeinsam genutzt werden.
SSD1309 OLED Pinbelegung (I2C-Modul)
- GND-Pin: Mit GND auf dem Arduino Nano ESP32 verbinden.
- VCC-Pin: Stromversorgung für das Display. Mit 3,3 V verbinden.
- SCL-Pin: Serielle Uhr für I2C. Mit A5 verbinden.
- SDA-Pin: Serielle Daten für I2C. Mit A4 verbinden.

※ Notiz:
- Das Pin-Layout des OLED-Moduls kann je nach Hersteller unterschiedlich sein. Verwenden Sie immer die auf dem Modul selbst aufgedruckten Beschriftungen.
- Dieses Tutorial verwendet das SSD1309 I2C OLED von DIYables, das getestet und bestätigt funktioniert.
Schaltschema
- Schaltschema zwischen Arduino Nano ESP32 und SSD1309 OLED 128x64

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Die Verdrahtungstabelle zwischen Arduino Nano ESP32 und SSD1309 OLED-Display:
| OLED-Modul | Arduino Nano ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
So programmieren Sie Arduino Nano ESP32 für SSD1309 OLED
Installieren Sie die DIYables_OLED_SSD1309-Bibliothek
- Klicken Sie auf das Symbol Libraries (Bibliotheken) in der linken Leiste der Arduino IDE.
- Suchen Sie nach DIYables_OLED_SSD1309 und finden Sie die DIYables OLED SSD1309-Bibliothek von DIYables.
- Klicken Sie auf Install (Installieren), um die DIYables_OLED_SSD1309-Bibliothek zu installieren.

- Sie werden aufgefordert, Abhängigkeiten für die Bibliothek zu installieren.
- Klicken Sie auf Install All (Alle installieren), um alle erforderlichen Abhängigkeiten zu installieren.

Programmierungsschritte
- Erforderliche Bibliotheken einbinden
- Bildschirmdimensionen definieren
- Display-Objekt deklarieren
- Initialisieren Sie das OLED in setup()
- Inhalte anzeigen
Arduino Nano ESP32 Code — Hallo Welt auf SSD1309 OLED
Der einfachste Ausgangspunkt: Drucken Sie ein paar Textzeilen in verschiedenen Größen.
Arduino Nano ESP32 Code — Text auf SSD1309 OLED anzeigen
Das folgende Beispiel zeigt weitere Text-Funktionen — mehrere Größen, Zahlformatierung und das F()-Makro zum Sparen von RAM.
Hilfreiche Display-Funktionsreferenz
- oled.clearDisplay() — Framebuffer löschen (alle Pixel aus).
- oled.display() — Puffer zum OLED übertragen, damit Änderungen sichtbar werden.
- oled.drawPixel(x, y, color) — Einzelnes Pixel setzen oder löschen.
- oled.setTextSize(n) — Schriftart um Faktor *n* skalieren (1 = 6×8, 2 = 12×16, …).
- oled.setCursor(x, y) — Textcursor zu Pixelkoordinaten *(x, y)* verschieben.
- oled.setTextColor(SSD1309_PIXEL_ON) — nur Text-Vordergrund (transparenter Hintergrund).
- oled.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — Text mit expliziter Hintergrundfarbe.
- oled.println("message") — Zeichenkette drucken und zur nächsten Zeile vorrücken.
- oled.println(number) — Ganzzahl in Dezimalzahl drucken.
- oled.println(number, HEX) — Ganzzahl in Hexadezimalzahl drucken.
- oled.startscrollright(start, stop) — Hardware-Scrolling nach rechts zwischen Seite *start* und *stop*.
- oled.startscrollleft(start, stop) — Hardware-Scrolling nach links.
- oled.startscrolldiagright(start, stop) — Hardware-Scrolling diagonal nach rechts.
- oled.startscrolldiagleft(start, stop) — Hardware-Scrolling diagonal nach links.
- oled.stopscroll() — Aktives Hardware-Scrolling stoppen.
- oled.setContrast(value) — Displayhelligkeit anpassen (0–255).
- oled.dim(true/false) — Display schnell abdunkeln oder wiederherstellen.
- oled.invertDisplay(true/false) — Hardware-Farbtausch.
Wie man Text auf dem SSD1309 OLED vertikal und horizontal zentriert
Arduino Nano ESP32 Code — Formen auf SSD1309 OLED zeichnen
Die DIYables_OLED_SSD1309-Bibliothek erweitert Adafruit_GFX und bietet Ihnen einen vollständigen Satz von Form-Zeichnungs-Primitiven: Pixel, Linien, Rechtecke, gefüllte Rechtecke, Kreise, gefüllte Kreise, Dreiecke, gefüllte Dreiecke und abgerundete Rechtecke.
Arduino Nano ESP32 Code — Hardware-Scrolling auf SSD1309 OLED
Das SSD1309 verfügt über eine Hardware-Scrolling-Engine, die Displayinhalte ohne CPU-Last verschiebt. Vier Scroll-Richtungen sind verfügbar: rechts, links, diagonal-rechts und diagonal-links. Jede Funktion nimmt Start- und Stop-Seitennummern auf (Seiten sind 8-Pixel-hohe Streifen, nummeriert 0–7).
※ Notiz:
Rufen Sie display() auf, um Ihren Inhalt zum OLED zu verschieben, bevor Sie das Scrolling starten. Stoppen Sie das Scrolling mit stopscroll(), bevor Sie neue Inhalte zeichnen.
Arduino Nano ESP32 Code — Bitmap-Bild auf SSD1309 OLED anzeigen
Um ein Bitmap anzuzeigen, müssen Sie Ihr Bild zunächst in ein C-Byte-Array konvertieren. Verwenden Sie das kostenlose image2cpp Online-Tool:
- Laden Sie Ihr Bild hoch (PNG, JPG, BMP usw.).
- Stellen Sie die Leinwandgröße auf 128×64 (oder kleiner).
- Wählen Sie Arduino code als Ausgabeformat.
- Kopieren Sie das generierte Array in Ihren Sketch.

※ Notiz:
- Bitmap-Dimensionen dürfen 128×64 für dieses Modul nicht überschreiten.
Arduino Nano ESP32 Code — Kontrast und Abdunkeln auf SSD1309 OLED
Das SSD1309 unterstützt 256 Kontraststufen (0–255). Verwenden Sie setContrast() für feine Steuerung und dim() für einen schnellen Wechsel zwischen minimaler Helligkeit und der zuvor konfigurierten Stufe.
Arduino Nano ESP32 Code — Benutzerdefinierte externe Schriftarten auf SSD1309 OLED
Die Adafruit GFX-Bibliothek enthält Dutzende von skalierbaren FreeFont-Schriftarten (Serif, Sans, Mono — Regular, Bold, Italic, vier Größen jeweils). Aktivieren Sie einen beliebigen von ihnen, indem Sie den entsprechenden Header einbinden und setFont() aufrufen.
※ Notiz:
- Wenn eine externe Schriftart aktiv ist, bezieht sich die Cursor-Y-Koordinate auf die Text-Grundlinie, nicht auf die obere linke Ecke.
- Externe Schriftarten werden im Flash (PROGMEM) gespeichert. Verwenden Sie sie sorgfältig, um innerhalb des Flash-Budgets des Arduino Nano ESP32 zu bleiben.
SSD1309 OLED-Fehlerbehebung mit Arduino Nano ESP32
Wenn nach dem Hochladen Ihres Sketches nichts auf dem 2,42-Zoll-SSD1309-OLED angezeigt wird, arbeiten Sie diese Überprüfungen durch:
- Verdrahtung überprüfen — bestätigen Sie, dass SDA→A4, SCL→A5, VCC→3,3V und GND→GND alle korrekt verbunden sind.
- Treiber-Chip bestätigen — diese Bibliothek zielt auf den SSD1309 ab. Module mit einem anderen Controller (z. B. SH1106) reagieren nicht korrekt.
- I2C-Adresse überprüfen — die meisten SSD1309-Module verwenden standardmäßig 0x3C, aber einige verwenden 0x3D. Verwenden Sie den I2C-Scanner-Sketch unten, um die tatsächliche Adresse zu finden:
Erwartete Serial Monitor-Ausgabe, wenn das SSD1309 erkannt wird:
- Stellen Sie sicher, dass display() aufgerufen wird — das SSD1309 verwendet einen Framebuffer. Zeichnungsfunktionen ändern nur den RAM; nichts wird auf dem Bildschirm angezeigt, bis Sie oled.display() aufrufen.
- Stromversorgung überprüfen — das 2,42-Zoll-Modul verbraucht mehr Strom als kleinere OLEDs. Bestätigen Sie, dass 3,3 V ausreichend Strom liefert (typischerweise 20–40 mA bei voller Helligkeit).