Arduino UNO Q - OLED 128x64
In diesem Tutorial erfahren Sie, wie Sie ein SSD1306 OLED 128x64-Display mit Arduino UNO Q verwenden — von grundlegendem Text bis hin zu Formen, Bildern und Telegram-Fernsteuerung.
- So verbinden Sie ein SSD1306 OLED 128x64 mit Arduino UNO Q
- So zeigen Sie "Hallo Welt"-Text in verschiedenen Größen auf dem OLED an
- So zeigen Sie Text, Ganzzahlen, Gleitkommazahlen und Hexadezimalzahlen an
- So zeichnen Sie Formen: Pixel, Linien, Rechtecke, Kreise und Dreiecke
- So verwenden Sie Hardware-Scrolling (rechts, links, diagonal)
- So zeigen Sie Bitmap-Bilder auf dem OLED an
- So steuern Sie die Displayhelligkeit und den Kontrast
- So verwenden Sie benutzerdefinierte externe Schriftarten
- So steuern Sie das OLED remote von Linux über Bridge-Programmierung
- 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) |
Kaufhinweis: Wenn Sie ein größeres OLED-Display möchten, verwenden Sie das 2.42 inch OLED Display 128x64.
Über OLED 128x64-Display
Das SSD1306 OLED 128x64 ist ein kompaktes monochromes Display, das vom SSD1306-Controller über I2C gesteuert wird. Es hat 128 × 64 Pixel und kann scharfen Text, Symbole, Diagramme und benutzerdefinierte Grafiken anzeigen.
OLED-Pinbelegung
- GND — mit GND verbinden
- VCC — mit 3,3 V oder 5 V 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 selbst. In diesem Tutorial wird ein auf SSD1306 basierendes OLED verwendet und mit DIYables-Modulen getestet.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| OLED-Pin | Arduino UNO Q Pin |
|---|---|
| GND | GND |
| VCC | 3,3 V |
| SCL | SCL |
| SDA | SDA |
So programmieren Sie das OLED
Die Adafruit SSD1306-Bibliothek bietet alle Funktionen, die zum Steuern des OLED erforderlich sind.
- Bibliotheken einbinden:
- OLED-Objekt erstellen (128x64):
- In setup() initialisieren:
- Text anzeigen:
※ Notiz:
Rufen Sie immer oled.display() nach Zeichnungsbefehlen auf, um den Puffer zum Bildschirm zu übertragen. Zeichnungsbefehle allein aktualisieren nicht das Sichtbare.
Arduino UNO Q-Code — Hallo Welt auf SSD1306 OLED
Das Arduino UNO Q hat zwei Prozessoren: die STM32-MCU (verarbeitet Hardware-Echtzeit-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 dem 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.
- OLED verdrahten: Verbinden Sie GND→GND, VCC→3,3 V, SCL→SCL, SDA→SDA.
- Verbinden: Stecken Sie Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer.
- Arduino App Lab öffnen: Starten Sie Arduino App Lab und warten Sie, bis es Ihren 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_OLED_128x64
- 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 Adafruit SSD1306 created by Adafruit 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 das OLED — es zeigt "Hallo, Welt!", "DIYables" und "OLED 128x64 SSD1306"!
Arduino UNO Q-Code — Text auf SSD1306 OLED anzeigen
Dieses Beispiel demonstriert verschiedene Textgrößen und wie Sie Ganzzahlen, Gleitkommazahlen und Hexadezimalzahlen auf dem 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.

Das OLED wechselt durch Textgrößen-Demos, zeigt dann eine Ganzzahl, eine Gleitkommazahl und eine Hexadezimalzahl an.
Nützliche Referenz zu Anzeigebefehlen
Kurzverweis für häufig verwendete SSD1306 OLED-Funktionen:
- oled.clearDisplay() — Rahmenpuffer löschen (alle Pixel aus)
- oled.display() — Puffer zum Bildschirm schieben — nach jedem Zeichnungsbefehl erforderlich
- oled.drawPixel(x, y, color) — einzelnes Pixel setzen oder löschen
- oled.setTextSize(n) — Schriftart um Faktor *n* skalieren (1 = 6×8 px, 2 = 12×16 px, …)
- oled.setCursor(x, y) — Textcursor zu Pixelkoordinaten *(x, y)* verschieben
- oled.setTextColor(WHITE) — nur Textvordergrund (transparenter Hintergrund)
- oled.setTextColor(BLACK, WHITE) — Text mit ausdrücklichem Hintergrund
- oled.println("message") — Zeichenkette drucken und zur nächsten Zeile wechseln
- oled.println(number) — Ganzzahl in Dezimalzahl drucken
- oled.println(number, HEX) — Ganzzahl in Hexadezimalzahl drucken
- oled.startscrollright(start, stop) — Hardware-Scroll rechts zwischen Seiten
- oled.startscrollleft(start, stop) — Hardware-Scroll links
- oled.startscrolldiagright(start, stop) — diagonales Scrollen nach rechts
- oled.startscrolldiagleft(start, stop) — diagonales Scrollen nach links
- oled.stopscroll() — alle aktiven Hardware-Scrolls stoppen
- oled.setContrast(value) — Helligkeit anpassen (0–255)
- oled.dim(true/false) — schnelle Dimmumschaltung
- oled.invertDisplay(true/false) — Hardware-Farb-Inversion
Arduino UNO Q-Code — Formen auf SSD1306 OLED zeichnen
Die Adafruit SSD1306-Bibliothek erbt von Adafruit_GFX und bietet Ihnen Pixel, Linien, Rechtecke, Kreise, Dreiecke und abgerundete Rechtecke. Die folgende Skizze wechselt durch alle.
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.

Schauen Sie zu, wie das OLED alle Formen wechselt — Pixel, Linien, Rechtecke, Kreise, abgerundete Rechtecke und Dreiecke!
Arduino UNO Q-Code — Hardware-Scrolling auf SSD1306 OLED
Das SSD1306 verfügt über eine integrierte Hardware-Scrolling-Engine, die Inhalte ohne CPU-Arbeit verschiebt. Die Bibliothek bietet vier Scrollrichtungen: rechts, links, diagonal-rechts und diagonal-links.
※ Notiz:
Rufen Sie immer oled.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.

Das OLED scrollt "DIYables" rechts, links, diagonal-rechts und diagonal-links und wiederholt sich endlos.
Arduino UNO Q-Code — Bitmap-Bild auf SSD1306 OLED anzeigen
Um ein Bitmap auf dem SSD1306 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 (PNG, JPG, BMP, usw.) hoch.
- Stellen Sie die Canvasgröß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-Herzsymbol und schaltet dann zum vollständigen 128 × 64-Arduino-Symbol um — 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.

Das OLED zeigt 3 Sekunden lang das Herzsymbol, dann schaltet es zum Arduino-Symbol um.
※ Notiz:
Bitmap-Dimensionen dürfen die Bildschirmauflösung nicht überschreiten (128 × 64).
Arduino UNO Q-Code — Kontrast und Dimmen auf SSD1306 OLED
Das SSD1306 unterstützt 256 Kontraststufen (0–255). Verwenden Sie setContrast() für genaue Steuerung und dim() für eine 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.

Schauen Sie zu, wie die OLED-Helligkeit nach oben und unten ansteigt, gefolgt von einem Dimm-An/Dimm-Aus-Zyklus.
Arduino UNO Q-Code — Benutzerdefinierte externe Schriftarten auf SSD1306 OLED
Die Adafruit GFX-Bibliothek enthält viele FreeFont-Schrifttypen (Serif, Sans, Mono — in mehreren Größen). Verwenden Sie sie, indem Sie den Schriftkopf einbinden und setFont() aufrufen.
※ Notiz:
Wenn eine externe Schriftart aktiv ist, bezieht sich die Cursor-Y-Koordinate auf die Text-Basislinie, 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.

Das OLED wechselt durch 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 Arduino_RouterBridge-Bibliothek — niemals über rohe serielle Anschlüsse.
- Das 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 der MCU auf, die das Display aktualisiert und das Ergebnis zum 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 remote auf dem OLED anzeigen.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe()-Funktionen auf der MCU-Seite auf (da OLED-Display-Schreibvorgänge Hardware-API-Aufrufe sind).
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie niemals direkt.
Kurz: MPU sendet Text über Bridge → MCU aktualisiert OLED → MCU druckt Ergebnis zum Monitor.
MCU-Skizze — OLED 128x64 mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) — Text auf OLED von Linux anzeigen:
Schnelle Schritte
- Neue App erstellen: Öffnen Sie Arduino App Lab, klicken Sie auf Neue App erstellen, benennen Sie sie DIYables_OLED_128x64_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 wechselt durch Nachrichten auf dem OLED.
App Lab-Konsolenausgabe
Telegram-Integration
Zeigen Sie beliebigen Text remote von überall über Telegram auf Ihrem OLED 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 die STM32 hochgeladen und dort ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für OLED 128x64:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /display Hallo Welt — der Text erscheint auf dem OLED.
- Senden Sie /clear — der OLED-Bildschirm wird gelöscht.
- Senden Sie /status — der Bot antwortet mit dem aktuellen OLED-Inhalt.
Schnelle Schritte
- MCU-Skizze hochladen: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt.
- Telegram-Skript einfügen: Kopieren Sie den Python-Code oben in die Python-Registerkarte.
- Ihr Token einstellen: Ersetzen Sie YOUR_BOT_TOKEN durch Ihr tatsächliches Bot-Token.
- App ausführen: Klicken Sie auf Ausführen — der Bot beginnt, auf Telegram-Befehle zu lauschen.
- Testen Sie es: Senden Sie /display Arduino UNO Q — der Text sollte auf dem OLED erscheinen.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können den OpenClaw an dieses Tutorial anpassen, indem Sie sich auf die Anleitung im Tutorial Arduino Uno Q - OpenClaw beziehen
Anwendungs-/Projektideen
- Kompakte Sensoranzeige: Zeigen Sie Temperatur-, Feuchtigkeits- oder Entfernungswerte in kleinem Formfaktor für tragbare oder eingebettete Projekte an
- Remote-Statusboard: Übertragen Sie Warnmeldungen über Telegram an das OLED, wenn ein Sensorschwellenwert überschritten wird
- Wi-Fi-Signalstärkemesser: Zeigen Sie die Wi-Fi-Signalstärke der MPU und den Namen des verbundenen Netzwerks auf dem OLED an
- Stoppuhr / Timer: Verwenden Sie das OLED, um einen millisekunden-genauen Timer anzuzeigen, der über Telegram-Start-/Stoppbefehle gesteuert wird
- Benutzerdefinierte Symbolan zeige: Zeichnen Sie ein Batteriesymbol oder Signalbalken auf dem OLED mit drawRect, fillRect und drawBitmap
Stellen Sie sich selbst auf die Probe
- Leicht: Ändern Sie den Telegram-Bot so, dass er /big <text> unterstützt, das Text in Schriftgröße 2 (größere Zeichen) anzeigt
- Mittel: Fügen Sie Zentrierung hinzu: Berechnen Sie (SCREEN_WIDTH - textWidth) / 2 und verwenden Sie dies als x-Cursorposition
- Fortgeschritten: Zeigen Sie eine Echtzeituhr auf dem OLED an — rufen Sie die aktuelle Zeit über die Linux-Uhr der MPU über Bridge ab und aktualisieren Sie jede Sekunde