Arduino UNO Q - SSD1309 OLED Display (2.42 Zoll)
In diesem Tutorial erfahren Sie, wie Sie ein 2,42-Zoll-SSD1309-OLED-128x64-Display mit Arduino UNO Q verwenden — vom grundlegenden Text und Grafiken bis hin zur Fernsteuerung über Telegram.
- So verbinden Sie ein SSD1309 OLED 128x64 mit Arduino UNO Q
- So zeigen Sie Text und Zahlen mithilfe der DIYables_OLED_SSD1309-Bibliothek an
- So zeichnen Sie Formen (Linien, Rechtecke, Kreise, Dreiecke) auf dem OLED
- So verwenden Sie Hardware-Scrolling in mehreren Richtungen
- So zeigen Sie Bitmap-Bilder auf dem OLED an
- So steuern Sie die Helligkeit und den Kontrast
- So verwenden Sie benutzerdefinierte externe Schriftarten
- So steuern Sie das OLED remote von Telegram über Bridge-Programmierung

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über die SSD1309 2,42-Zoll-OLED-Anzeige
Das SSD1309 ist ein 128×64-OLED-Treiber-IC, das häufig auf 2,42-Zoll-I2C-OLED-Modulen (manchmal auch als 2,4-Zoll bezeichnet) zu finden ist. Es ist registerkompatibel mit dem SSD1306, verwendet jedoch eine externe VCC-Schiene (die vom integrierten Boost-Konverter der Breakout-Platine transparent behandelt wird). Wichtigste Merkmale:
- Auflösung: 128 × 64 Pixel
- Schnittstelle: I2C (nur 4 Drähte erforderlich)
- Displayfarbe: Weiß, Blau oder Gelb je nach OLED-Material — nicht softwaregesteuert
- Betrachtungswinkel: Groß, selbstleuchtende Pixel — tiefe Schwarztöne, keine Hintergrundbeleuchtung erforderlich
- Bibliothek: Verwendet DIYables_OLED_SSD1309 (erweitert Adafruit GFX)
SSD1309 OLED Pinbelegung
- GND — mit GND verbinden
- VCC — mit 5V verbinden
- SCL — I2C-Taktsignal
- SDA — I2C-Datensignal

※ Notiz:
Die Pin-Reihenfolge kann je nach Hersteller unterschiedlich sein. Beachten Sie immer die Beschriftungen auf dem OLED-Modul.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| OLED-Pin | Arduino UNO Q Pin |
|---|---|
| GND | GND |
| VCC | 5V |
| SCL | SCL |
| SDA | SDA |
So programmieren Sie die SSD1309 OLED
- Bibliotheken einbinden:
- Display-Objekt erstellen:
- In setup() initialisieren:
- Text anzeigen:
※ Notiz:
Rufen Sie immer display.display() nach Zeichnungsbefehlen auf, um den Puffer zum physischen Bildschirm zu übertragen.
Arduino UNO Q-Code — Hallo Welt auf SSD1309 OLED
Das Arduino UNO Q hat zwei Prozessoren: die STM32-MCU (verarbeitet Echtzeit-Hardware-Steuerung) und die Qualcomm-MPU (führt Debian Linux aus). In diesem Abschnitt wird nur die STM32-MCU programmiert — die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Die folgende Skizze zeigt Text in zwei verschiedenen Größen auf der OLED.
Schnelle Schritte
- Erste Male mit Arduino UNO Q? Folgen Sie dem Tutorial Erste Schritte mit Arduino UNO Q, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Verdrahten Sie die OLED: Verbinden Sie GND→GND, VCC→5V, SCL→SCL, SDA→SDA.
- Verbinden: Stecken Sie das Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
- Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihr Arduino UNO Q erkennt.
- Neue App erstellen: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, z. B.: DIYables_SSD1309
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien, die in Ihrer neuen App generiert werden.

- Suchen Sie die Datei sketch/sketch.ino — hier fügen Sie die MCU-Skizze ein.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Search for DIYables_OLED_SSD1309 created by DIYables and click the Install button.
- Hochladen: Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen, um zu kompilieren und auf die STM32 hochzuladen.

Schauen Sie auf die OLED — sie zeigt "Hello, World!", "DIYables" und "SSD1309 OLED 128x64"!
Arduino UNO Q-Code — Text auf SSD1309 OLED anzeigen
Dieses Beispiel zeigt verschiedene Textgrößen und wie Sie Ganzzahlen, Gleitkommazahlen und Hexadezimalzahlen auf der OLED anzeigen.
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Die OLED durchläuft Text-Größen-Demos und zeigt dann eine Ganzzahl, eine Gleitkommazahl und eine Hexadezimalzahl an.
Nützliche Display-Funktionen Referenz
Schnelle Referenz für häufig verwendete SSD1309-OLED-Funktionen:
- display.clearDisplay() — Rahmenpuffer löschen (alle Pixel aus)
- display.display() — Puffer zum Bildschirm übertragen — erforderlich nach jedem Zeichnungsbefehl
- display.drawPixel(x, y, color) — ein einzelnes Pixel setzen oder löschen
- display.setTextSize(n) — Schrift um Faktor *n* skalieren (1 = 6×8 px, 2 = 12×16 px, …)
- display.setCursor(x, y) — Textkursor zu Pixelkoordinaten *(x, y)* verschieben
- display.setTextColor(SSD1309_PIXEL_ON) — nur Textvordergrund (transparenter Hintergrund)
- display.setTextColor(SSD1309_PIXEL_OFF, SSD1309_PIXEL_ON) — Text mit explizitem Hintergrund
- display.println("message") — Zeichenkette drucken und zur nächsten Zeile gehen
- display.println(number) — Ganzzahl in Dezimalformat drucken
- display.println(number, HEX) — Ganzzahl in Hexadezimalformat drucken
- display.startscrollright(start, stop) — Hardware-Scroll nach rechts zwischen Seiten
- display.startscrollleft(start, stop) — Hardware-Scroll nach links
- display.startscrolldiagright(start, stop) — diagonales Scrolling nach rechts
- display.startscrolldiagleft(start, stop) — diagonales Scrolling nach links
- display.stopscroll() — aktives Hardware-Scrolling stoppen
- display.setContrast(value) — Helligkeit anpassen (0–255)
- display.dim(true/false) — schnelle Dimm-Umschaltung
- display.invertDisplay(true/false) — Hardware-Farb-Inversion
Arduino UNO Q-Code — Formen auf SSD1309 OLED zeichnen
Die DIYables_OLED_SSD1309-Bibliothek erbt von Adafruit_GFX und gibt Ihnen Pixel, Linien, Rechtecke, gefüllte Rechtecke, Kreise, gefüllte Kreise, Dreiecke, gefüllte Dreiecke und gerundete Rechtecke. Die folgende Skizze durchläuft alle Formen.
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Beobachten Sie die OLED, wie sie alle Formen durchläuft — Pixel, Linien, Rechtecke, Kreise, gerundete Rechtecke und Dreiecke!
Arduino UNO Q-Code — Hardware-Scrolling auf SSD1309 OLED
Das SSD1309 hat eine integrierte Hardware-Scrolling-Engine, die Inhalte ohne CPU-Arbeit verschiebt. Die Bibliothek bietet vier Scroll-Richtungen: rechts, links, diagonal-rechts und diagonal-links.
※ Notiz:
Rufen Sie immer display.display() auf, um Ihren Inhalt zum OLED zu übertragen, bevor Sie einen Scroll starten. Rufen Sie stopscroll() auf, bevor Sie neue Inhalte zeichnen.
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Die OLED scrollt "DIYables" nach rechts, links, diagonal-rechts und diagonal-links, sich wiederholend für immer.
Arduino UNO Q-Code — Bitmap-Bild auf SSD1309 OLED anzeigen
Um ein Bitmap auf dem SSD1309 OLED anzuzeigen, müssen Sie Ihr Bild zunächst in ein C-Byte-Array konvertieren. Verwenden Sie das kostenlose Image to Bitmap Converter Tool:
- Laden Sie Ihre Bilddatei hoch (PNG, JPG, BMP, usw.).
- Stellen Sie die Leinwandgröße auf 128×64 (oder kleiner) ein.
- Wählen Sie Arduino code als Ausgabeformat.
- Kopieren Sie das generierte Array in Ihre Skizze.

Die folgende Skizze zeigt ein 16×16-Herz-Symbol und wechselt dann zum vollständigen 128×64-DIYables-Logo — beide als Byte-Arrays im Code gespeichert:
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Die OLED zeigt das Herz-Symbol für 3 Sekunden an, dann wechselt es zum DIYables-Logo.
※ Notiz:
Bitmap-Dimensionen dürfen die Bildschirmauflösung (128×64) nicht überschreiten.
Arduino UNO Q-Code — Kontrast und Dimmen auf SSD1309 OLED
Das SSD1309 unterstützt 256 Kontraststufen (0–255). Verwenden Sie setContrast() für feine Kontrolle und dim() für schnelle Helligkeitsumschaltung.
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Beobachten Sie die OLED-Helligkeit, die ansteigt und dann abnimmt, gefolgt von einem Dimm-Ein-/Dimm-Aus-Zyklus.
Arduino UNO Q-Code — Benutzerdefinierte externe Schriftarten auf SSD1309 OLED
Die Adafruit GFX-Bibliothek enthält viele FreeFont-Schriftarten (Serif, Sans, Mono — in mehreren Größen). Verwenden Sie diese, indem Sie die Schriftart-Kopfzeile einbinden und setFont() aufrufen.
※ Notiz:
Wenn eine externe Schriftart aktiv ist, bezieht sich die Kursor-Y-Koordinate auf die Text-Grundlinie, nicht die obere linke Ecke. Dies unterscheidet sich von der integrierten 5×7-Schriftart.
Schnelle Schritte
- Kopieren Sie den Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Klicken Sie in Arduino App Lab auf die Schaltfläche Ausführen.

Die OLED durchläuft die integrierte Schriftart, FreeSerif 9pt, FreeSansBold 12pt und FreeMono 9pt.
Linux + MCU Bridge-Programmierung
Das Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, führt Debian Linux aus) und die MCU (STM32, führt Zephyr OS mit Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Bibliothek Arduino_RouterBridge — nie über Rohserialports.
- Das SSD1309 OLED ist mit der MCU (STM32) verbunden — über I2C (SCL/SDA). Nur die MCU kann es direkt steuern.
- Die MPU kann das OLED nicht direkt steuern — sie ruft Bridge.call("display_text", "text") auf, was das Display aktualisiert und das Ergebnis an Monitor druckt.
- Die MPU hat Wi-Fi — da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie Telegram-Befehle empfangen und jede Nachricht auf dem OLED remote anzeigen.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe()-Funktionen auf der MCU-Seite auf (da OLED-Schreibvorgänge Hardware-API-Aufrufe sind).
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie diese nie direkt.
MCU-Skizze — SSD1309 OLED mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) — Text auf SSD1309 OLED von Linux anzeigen:
Schnelle Schritte
- Neue App erstellen: Öffnen Sie Arduino App Lab, klicken Sie auf Neue App erstellen, benennen Sie sie DIYables_SSD1309_Bridge, und klicken Sie auf Erstellen.
- MCU-Skizze einfügen: Kopieren Sie den Bridge-MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
- Python-Skript einfügen: Kopieren Sie den Python-Code oben und fügen Sie ihn in die Python-Datei in der App ein.
- App ausführen: Klicken Sie auf die Schaltfläche Ausführen — die Python-Seite durchläuft Nachrichten auf dem OLED.
App Lab Console-Ausgabe
Telegram-Integration
Zeigen Sie jeden Text auf Ihrem SSD1309 OLED von überall über Telegram an.
Wenn Sie noch keinen Telegram-Bot haben, lesen Sie How to Create a Telegram Bot, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits auf der STM32 hochgeladen und ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für SSD1309 OLED:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN mit dem Token von @BotFather auf Telegram.
- Senden Sie /display Hello — erscheint auf dem OLED.
- Senden Sie /clear — löscht das OLED.
- Senden Sie /status — Bot antwortet mit dem aktuellen Text.
App Lab Console-Ausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung zum Arduino Uno Q - OpenClaw Tutorial beachten.
Anwendungs-/Projektideen
- Großtext-Alert-Anzeige: Verwenden Sie Textgröße 3 oder 4, um einen einzelnen kritischen Wert (Temperatur, Spannung) über den gesamten 2,42-Zoll-Bildschirm anzuzeigen.
- Remote-Info-Board: Versenden Sie Nachrichten zum OLED von einer Telegram-Gruppe, um Team-Ankündigungen anzuzeigen.
- Datenlogger-Status: Zeigen Sie den letzten Datensatz-Zeitstempel und die Zeilenanzahl auf dem OLED an, wenn die MPU in eine CSV-Datei schreibt.
- Wi-Fi-Signalstärkemesser: Zeigen Sie SSID und RSSI-Stärke der Wi-Fi-Verbindung auf dem großen 2,42-Zoll-Bildschirm an.
- Benutzerdefinierte Symbol-Rendering: Verwenden Sie drawBitmap(), um Logos oder Warnsymbole anzuzeigen, die als Byte-Arrays in der MCU-Skizze gespeichert sind.
Fordern Sie sich selbst heraus
- Einfach: Ändern Sie die Skizze, um setTextSize(2) für die erste Zeile und setTextSize(1) für nachfolgende Zeilen zu verwenden, um ein Titel-/Body-Layout zu erstellen.
- Mittel: Fügen Sie einen /contrast <0-255> Telegram-Befehl hinzu, der display.ssd1309_command(SSD1309_SETCONTRAST) aufruft, gefolgt vom Wert, um die Bildschirmhelligkeit anzupassen.
- Fortgeschritten: Zeigen Sie ein Echtzeit-Balkendiagramm auf dem OLED mit fillRect() an, das sich von über Bridge gesendeten Sensordaten aktualisiert.