Arduino Uno R4 - SSD1309 OLED Display 128x64 | 2.42 Zoll I2C OLED Anleitung
Organic Light-Emitting Diode (OLED) Displays verfügen über selbstleuchtende Pixel, die echte Schwarzwerte, überlegene Kontrastverhältnisse und exzellente Betrachtungswinkel aus allen Richtungen erzeugen — dies bietet erhebliche Vorteile gegenüber herkömmlicher LCD-Technologie. Der SSD1309 Treiber-Chip versorgt die 2.42-Zoll (auch als 2.4-Zoll vermarktet) 128×64 monochromen OLED Module über I2C-Kommunikation.

Diese praktische Anleitung führt Sie durch die Verbindung des SSD1309 OLED 128×64 mit Ihrem Arduino Uno R4 Board über die DIYables_OLED_SSD1309 Bibliothek. Sie werden entdecken, wie Sie:
- Das 2.42-Zoll SSD1309 OLED über den I2C-Bus mit Arduino Uno R4 verdrahten
- Textzeichenfolgen und numerische Werte auf dem Bildschirm anzeigen
- Text horizontal und vertikal zentrieren
- Geometrische Grundformen (Linien, Rechtecke, Kreise, Dreiecke, abgerundete Formen) rendern
- Monochrome Bitmap-Grafiken anzeigen
- Hardware-Scrolling in mehrere Richtungen aktivieren
- Display-Helligkeit und Kontraststufen steuern
- Benutzerdefinierte Schriftarten aus der Adafruit GFX Font-Bibliothek integrieren
Benötigte Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über das SSD1309 2.42-Zoll OLED Display
Der SSD1309 dient als dedizierter CMOS-Treiber-IC, der für 128×64 Pixel OLED-Matrizen entwickelt wurde. Sein Registersatz behält die Kompatibilität mit dem beliebten SSD1306 bei, wodurch Code-Wiederverwendung mit geringfügigen Anpassungen ermöglicht wird. Bemerkenswerte Hardware-Unterschiede umfassen:
- Externe Stromversorgung erforderlich — im Gegensatz zur integrierten Ladungspumpe des SSD1306 ist der SSD1309 auf eine externe VCC-Versorgung angewiesen. Jedoch integrieren handelsübliche Breakout-Boards (einschließlich 2.42-Zoll und 2.4-Zoll Varianten) Onboard-Boost-Converter, wodurch dieser Unterschied bei der Verwendung transparent wird.
- Erweiterte Spannungsbereich — der SSD1309 verarbeitet bis zu 16 V VCC-Eingang, während der SSD1306 bei etwa 4.2 V begrenzt ist.
Das 2.42 Zoll (2.4 Zoll) OLED-Modul verwendet typischerweise den SSD1309-Controller und bietet ein 128×64 Auflösungs-Display, das über das I2C-Protokoll kommuniziert. Die Display-Farbe (weiß, blau, gelb, grün oder dual-farbige Zonen) hängt vom physischen OLED-Substrat ab und kann nicht durch Software-Befehle modifiziert werden.
Diese Anleitung verbindet mit dem Display über den I2C-Bus, erfordert nur zwei Signalleitungen (SDA und SCL) und ermöglicht die Bus-Teilung mit zusätzlichen I2C-Peripheriegeräten.
SSD1309 OLED Pinout (I2C Modul)
Standard 2.42-Zoll SSD1309 I2C OLED Module verfügen über vier Verbindungs-Pins:
- GND — Verbinden Sie mit Arduino Uno R4 Masse-Referenz.
- VCC — Stromversorgungseingang. Verbinden Sie mit Arduino Uno R4 5V-Ausgang (oder 3.3V falls das Modul es unterstützt).
- SCL — I2C-Taktsignalleitung.
- SDA — I2C-Datensignalleitung.

※ Notiz:
- Die Pin-Anordnung unterscheidet sich zwischen Herstellern. Überprüfen Sie immer die Siebdruck-Beschriftungen auf Ihrem spezifischen Modul, bevor Sie Verbindungen herstellen.
- Diese Anleitung wurde mit dem 2.42 Zoll SSD1309 OLED Display von DIYables validiert. Andere SSD1309-basierte 2.4/2.42-Zoll Module sollten identisch funktionieren.
Verdrahtungsschema — Arduino Uno R4 & SSD1309 OLED 128×64
- Schematische Verbindungen zwischen Arduino Uno R4 und dem 2.42 Zoll SSD1309 OLED 128×64

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Physische Verdrahtungs-Fotografie zwischen Arduino Uno R4 und SSD1309 OLED 128×64

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.
Der Arduino Uno R4 verwendet dieselben I2C-Pin-Positionen wie der klassische Uno. Verbindungsdetails:
| OLED Modul | Arduino Uno R4 |
|---|---|
| Vin | 5V |
| GND | GND |
| SDA | A4 (oder SDA Pin) |
| SCL | A5 (oder SCL Pin) |
Erste Schritte — SSD1309 OLED mit Arduino Uno R4
Schritt 1: Installation der DIYables_OLED_SSD1309 Bibliothek
- Starten Sie die Arduino IDE und klicken Sie auf das Libraries Symbol in der linken Seitenleiste.
- Geben Sie "DIYables_OLED_SSD1309" in das Suchfeld ein und finden Sie die Bibliothek von DIYables.
- Klicken Sie auf die Install Schaltfläche.

- Die IDE wird Sie auffordern, die erforderliche Abhängigkeit (Adafruit GFX Library) zu installieren. Klicken Sie auf Install All.

Schritt 2: Grundlegende Programmstruktur
Alle SSD1309-Sketches folgen dieser konsistenten Struktur: Header einbinden, ein Display-Objekt instanziieren, es in setup() initialisieren, Inhalt in den Frame-Buffer zeichnen, dann den Buffer mit display() auf den Bildschirm übertragen.
- Notwendige Header einbinden:
- Die Bildschirmdimensionen definieren (128×64 für das 2.42-Zoll Modul):
- Das Display-Objekt instanziieren (verwenden Sie -1 wenn kein Reset-Pin verbunden ist):
- Das Display innerhalb von setup() initialisieren:
- Nach der Initialisierung rufen Sie Zeichenfunktionen (clearDisplay(), drawPixel(), print(), etc.) gefolgt von oled.display() auf, um den Bildschirm zu aktualisieren.
※ Notiz:
Alle Code-Beispiele in dieser Anleitung zielen auf das SSD1309 OLED 128×64 (2.42 Zoll) ab und verwenden die DIYables_OLED_SSD1309 Bibliothek mit Arduino Uno R4.
Arduino Uno R4 Code — Hello World auf SSD1309 OLED
Die einfachste Demonstration: Text in verschiedenen Größen anzeigen.
Arduino Uno R4 Code — Text auf SSD1309 OLED anzeigen
Dieses Beispiel zeigt erweiterte Textfunktionen — variable Größen, numerische Formatierung und das F() Makro zur RAM-Einsparung.
Nützliche Display-Funktionen Referenz
Schnellreferenz für häufig verwendete SSD1309 OLED-Funktionen über die DIYables-Bibliothek:
- oled.clearDisplay() — Frame-Buffer löschen (alle Pixel aus).
- oled.display() — Buffer zum OLED übertragen, um Änderungen sichtbar zu machen.
- 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, …, bis zu 8).
- oled.setCursor(x, y) — Text-Cursor auf Pixelkoordinaten *(x, y)* positionieren.
- 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") — String drucken und zur nächsten Zeile wechseln.
- oled.println(number) — Integer im Dezimalformat drucken.
- oled.println(number, HEX) — Integer im Hexadezimalformat drucken.
- oled.startscrollright(start, stop) — Hardware-Scrolling nach rechts zwischen Seite *start* und Seite *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() — jedes aktive Hardware-Scrolling stoppen.
- oled.setContrast(value) — Display-Helligkeit anpassen (0–255).
- oled.dim(true/false) — Display schnell auf Minimum dimmen oder vorherigen Kontrast wiederherstellen.
- oled.invertDisplay(true/false) — Hardware-Farbinversion (Ein-Pixel ↔ Aus-Pixel).
Wie man Text vertikal und horizontal auf dem SSD1309 OLED zentriert
Arduino Uno R4 Code — Formen auf SSD1309 OLED zeichnen
Die DIYables_OLED_SSD1309 Bibliothek erbt von Adafruit_GFX und bietet vollständige Formen-Zeichnungsfunktionen: Pixel, Linien, Rechtecke, gefüllte Rechtecke, Kreise, gefüllte Kreise, Dreiecke, gefüllte Dreiecke und abgerundete Rechtecke. Der folgende Sketch demonstriert alle mit animierten Sequenzen.
Arduino Uno R4 Code — Hardware-Scrolling auf SSD1309 OLED
Der SSD1309 umfasst eine Hardware-Scrolling-Engine, die Display-Inhalte ohne CPU-Intervention bewegt. Die DIYables-Bibliothek bietet vier Scroll-Modi: rechts, links, diagonal-rechts und diagonal-links. Jeder akzeptiert einen Start-Seiten- und Stop-Seiten-Parameter (Seiten sind 8-Pixel-hohe horizontale Bänder, nummeriert 0–7 auf einem 64-Pixel-hohen Display).
※ Notiz:
Rufen Sie immer display() auf, um Ihren Inhalt zum OLED zu übertragen bevor Sie ein Scrolling initiieren. Vermeiden Sie das Rendern neuer Inhalte während das Scrolling aktiv ist — rufen Sie zuerst stopscroll() auf.
Arduino Uno R4 Code — Bitmap-Bild auf SSD1309 OLED anzeigen
Um eine Bitmap auf dem SSD1309 OLED anzuzeigen, müssen Sie zuerst Ihr Bild in ein C-Byte-Array konvertieren. Verwenden Sie das kostenlose image2cpp Online-Tool für diese Konvertierung:
- Laden Sie Ihre Bilddatei hoch (PNG, JPG, BMP, etc.).
- Konfigurieren Sie die Canvas-Größe auf 128×64 (oder kleiner).
- Wählen Sie Arduino code als Ausgabeformat.
- Kopieren Sie das generierte Array in Ihren Sketch.

Das folgende Beispiel wechselt zwischen einem 16×16 Herz-Icon und einem vollbreiten DIYables-Logo:
※ Notiz:
- Bitmap-Dimensionen dürfen die Bildschirmauflösung nicht überschreiten (128×64 für das 2.42 Zoll Modul).
Arduino Uno R4 Code — Kontrast und Dimmen auf SSD1309 OLED
Der SSD1309 bietet 256 Kontraststufen (0–255). Die DIYables-Bibliothek stellt setContrast() für präzise Kontrolle und dim() für schnelles Umschalten zwischen minimaler Helligkeit und dem zuvor eingestellten Level bereit.
Arduino Uno R4 Code — Benutzerdefinierte externe Schriftarten auf SSD1309 OLED
Die Adafruit GFX Bibliothek umfasst Dutzende skalierbarer FreeFont Schriftarten (Serif, Sans, Mono — jeweils in Regular, Bold, Italic und mehreren Größen). Sie können jede davon auf dem SSD1309 Display verwenden, indem Sie den relevanten 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. Dies unterscheidet sich vom Verhalten der eingebauten 5×7 Schriftart.
- Externe Schriftarten werden im Flash (PROGMEM) gespeichert. Bei speicherbeschränkten Boards wie dem klassischen Uno (32 KB Flash) verwenden Sie sie sparsam. Der Arduino Uno R4 hat mehr Speicher und ermöglicht mehr Flexibilität.
SSD1309 OLED Fehlerbehebung mit Arduino Uno R4
Wenn das 2.42 Zoll SSD1309 OLED nach dem Hochladen Ihres Sketches leer bleibt, arbeiten Sie diese Diagnoseschritte durch:
- Verbindungen überprüfen — bestätigen Sie, dass SDA, SCL, VCC und GND mit den korrekten Arduino Uno R4 Pins verdrahtet sind.
- Treiber-Chip bestätigen — diese Bibliothek ist für den SSD1309 entwickelt. Wenn Ihr Modul einen anderen Controller verwendet (z.B. SH1106), wird es nicht korrekt antworten.
- I2C-Adresse prüfen — die meisten SSD1309 Module verwenden standardmäßig 0x3C, aber einige verwenden 0x3D. Führen Sie den I2C-Scanner-Sketch unten aus, um die tatsächliche Adresse zu erkennen:
Erwartete Serial Monitor Ausgabe, wenn der SSD1309 erkannt wird:
- Sicherstellen, dass display() aufgerufen wird — der SSD1309 verwendet einen Frame-Buffer. Zeichenfunktionen modifizieren nur den Buffer im RAM; nichts erscheint auf dem Bildschirm, bis Sie oled.display() aufrufen.
- Stromversorgung prüfen — das 2.42 Zoll Modul zieht mehr Strom als kleinere OLEDs. Stellen Sie sicher, dass Ihre Stromquelle ausreichend Strom liefern kann (typischerweise 20–40 mA bei voller Helligkeit).