Willst du deinem Projekt einen Hauch von Eleganz verleihen? Wie wäre es mit einem coolen OLED-Display? Sie sind flach, leicht, energieeffizient und bieten ein gestochen scharfes Bild. In diesem Blog-Artikel erfährst du, wie du ein OLED-Display (Adafruit SSD1306) an deinen Arduino anschließt und verwendest.
Diese Bauteile brauchst du
- 1× (optional) Arduino-Board Arduino Uno, Mega oder Nano; alternativ statt Arduino ein ESP8266-Board verwenden.
- 1× (optional) NodeMCU ESP8266 Alternative zum Arduino, z. B. NodeMCU oder Wemos D1 Mini.
- 1× (optional) ESP32 Alternative zum Arduino, z. B. NodeMCU oder Wemos D1 Mini.
- 1× OLED-Display 128×64 I2C-Modul mit Anschlüssen GND, VCC, SDA und SCL; beim ESP8266 3,3-V-kompatibel betreiben.
- 1× Jumper-Kabel Mindestens vier Leitungen für GND, VCC, SDA und SCL.
- 1× Breadboard Optional, zur einfachen Steckverkabelung.
Affiliate-Links: Kaufst du über diese Links, erhält Pollux Labs eine kleine Provision – für dich ohne Mehrkosten.
Schritt 1: Verkabelung
Bevor wir mit der Programmierung beginnen, müssen wir das Display mit dem Arduino verbinden. Hier ist, wie Du es verkabelst:
- Schließe GND (Ground) des OLED-Displays an den GND-Pin des Arduino an.
- Verbinde VCC (Power) des Displays mit dem 5V-Pin des Arduino.
- Schließe SDA (Daten) des Displays an den A4-Pin (SDA) des Arduino Uno oder Mega, bzw. an den A4-Pin (SDA) des Arduino Nano an.
- Verbinde SCL (Clock) des Displays mit dem A5-Pin (SCL) des Arduino Uno oder Mega, bzw. an den A5-Pin (SCL) des Arduino Nano.
Wenn Du ein Breadboard verwendest, stecke das -Display auf das Breadboard und verbinde es mit dem Arduino über Jumper-Kabel.
Schritt 2: Bibliotheken installieren
Um das OLED-Display mit dem Arduino zu verwenden, benötigst du zwei Bibliotheken: die Adafruit-GFX-Bibliothek und die Adafruit-SSD1306-Bibliothek. Du kannst sie direkt aus der Arduino-IDE heraus installieren:
- Öffne die Arduino-IDE und den Bibliotheksverwalter: In der IDE 2.x über das Bücher-Symbol in der linken Seitenleiste, in der IDE 1.x über „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten…“.
- Suche nach „Adafruit GFX Library“ und installiere die neueste Version.
- Suche anschließend nach „Adafruit SSD1306“ und installiere auch hier die neueste Version.
Schritt 3: Beispielcode laden und anpassen
Jetzt, wo die Verkabelung und die Bibliotheken bereit sind, können wir den Beispielcode laden und anpassen:
- Öffne die Arduino-IDE und gehe zu „Datei“ > „Beispiele“ > „Adafruit SSD1306“ > „ssd1306_128x64_i2c“.
- Suche im Code nach der Zeile
#define OLED_RESET 4und ändere sie in#define OLED_RESET -1, um den Reset-Pin zu deaktivieren (wir benötigen ihn nicht). - Die Auflösung ist im Beispiel bereits über
#define SCREEN_WIDTH 128und#define SCREEN_HEIGHT 64auf 128×64 Pixel gesetzt – hier musst Du also nichts ändern. Sollte Dein Display eine andere Auflösung haben (z.B. 128×32), passe diese beiden Werte an. - Falls auf dem Display nichts erscheint, liegt es meist an der I2C-Adresse: Die meisten günstigen Module nutzen
0x3C(so auch im Beispiel), manche jedoch0x3D. Prüfe im Code die Zeile mitdisplay.begin(SSD1306_SWITCHCAPVCC, 0x3C)und passe die Adresse bei Bedarf an.
Schritt 4: Code hochladen und Display testen
Es ist Zeit, den angepassten Beispielcode auf Deinen Arduino zu laden und das OLED-Display zu testen:
- Stelle sicher, dass Dein Arduino über USB mit Deinem Computer verbunden ist.
- Wähle in der Arduino-IDE unter „Werkzeuge“ > „Board“ das richtige Arduino-Board aus (z.B. Arduino Uno, Mega oder Nano).
- Wähle unter „Werkzeuge“ > „Port“ den richtigen USB-Anschluss für Deinen Arduino aus.
- Klicke auf den „Hochladen“-Button (Pfeilsymbol) in der Arduino-IDE, um den Code auf Deinen Arduino zu übertragen.
Sobald der Code erfolgreich hochgeladen wurde, sollte das Display verschiedene Muster und Text anzeigen. Herzlichen Glückwunsch, Du hast erfolgreich ein OLED-Display an Deinen Arduino angeschlossen und verwendet!
Schritt 5: Dein eigenes Display-Design erstellen
Nun, da Du weißt, wie Du ein OLED-Display anschließt und den Beispielcode verwendest, kannst Du Deine eigenen Designs und Texte erstellen! Hier sind einige grundlegende Funktionen, die Du nutzen kannst:
display.clearDisplay();– Löscht den Display-Inhalt.display.setTextSize(1);– Setzt die Textgröße (1, 2, 3…).display.setTextColor(SSD1306_WHITE);– Setzt die Textfarbe (OLED-Displays sind normalerweise monochrom, daher ist Weiß die Standardfarbe). Hinweis: Ältere Tutorials verwenden hier nochWHITE– in aktuellen Versionen der Bibliothek solltest DuSSD1306_WHITEnutzen.display.setCursor(0, 0);– Setzt den Cursor an die angegebene Position (x, y).display.println("Hallo, Maker!");– Gibt Text auf dem Display aus.display.display();– Aktualisiert das Display, um die vorgenommenen Änderungen anzuzeigen.
Fühle Dich frei, mit diesen Funktionen zu experimentieren und dein eigenes Display-Design zu erstellen. Denke daran, den Befehl display.display(); nach deinen Anweisungen zu verwenden, um die Änderungen auf dem Display sichtbar zu machen.
Damit Du nicht auf den umfangreichen Beispiel-Sketch angewiesen bist, findest Du hier einen minimalen, vollständigen Sketch, der lediglich „Hallo, Maker!“ auf dem Display ausgibt. Er ist ein idealer Ausgangspunkt für Deine eigenen Projekte:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset-Pin nicht genutzt
#define SCREEN_ADDRESS 0x3C // ggf. 0x3D
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
for (;;); // Display nicht gefunden - hier anhalten
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Hallo, Maker!");
display.display();
}
void loop() {
// Hier kannst Du Dein Display fortlaufend aktualisieren
}
Übrigens, in diesem Tutorial lernst du, wie du Bilder auf dem OLED-Display anzeigst.
Der Anschluss am ESP8266
Der Anschluss eines OLED-Displays an einen ESP8266 ist ebenso einfach wie beim Arduino. Hier ist, wie Du es verkabelst:
Verkabelung und Code
Um das OLED-Display mit dem ESP8266 zu verbinden, führe die folgenden Schritte aus:
- Schließe GND (Ground) des OLED-Displays an den GND-Pin des ESP8266 an.
- Verbinde VCC (Power) des Displays mit dem 3.3V-Pin des ESP8266.
- Schließe SDA (Daten) des Displays an den D2-Pin (GPIO4, SDA) des ESP8266 an.
- Verbinde SCL (Clock) des Displays mit dem D1-Pin (GPIO5, SCL) des ESP8266.
Wenn Du ein Breadboard verwendest, stecke das OLED-Display auf das Breadboard und verbinde es mit dem ESP8266 über Jumper-Kabel.
Die restlichen Schritte zur Installation der Bibliotheken und zum Anpassen des Beispielcodes bleiben dieselben. Du musst lediglich eine kleine Änderung am Beispielcode vornehmen, um die Pin-Belegung für den ESP8266 festzulegen:
- Füge im Code die Zeile
#include <Wire.h>hinzu, um die Wire-Bibliothek einzubinden. - Füge direkt nach der Zeile
Wire.begin();die folgenden Zeilen hinzu, um die I2C-Pins für den ESP8266 festzulegen:
#if defined(ESP8266)
Wire.begin(4, 5); // SDA, SCL
#endif
Das war’s! Jetzt kannst Du den angepassten Code auf Deinen ESP8266 hochladen und das Display wie zuvor beschrieben verwenden.
Der Anschluss am ESP32
Auch am ESP32 lässt sich das OLED-Display problemlos betreiben – er ist inzwischen mindestens so verbreitet wie der ESP8266. Der ESP32 besitzt einen fest vorgesehenen I2C-Bus, sodass Du in der Regel gar keine Pins im Code angeben musst.
Verkabelung
- Schließe GND (Ground) des OLED-Displays an den GND-Pin des ESP32 an.
- Verbinde VCC (Power) des Displays mit dem 3.3V-Pin des ESP32.
- Schließe SDA (Daten) des Displays an GPIO21 (Standard-SDA) des ESP32 an.
- Verbinde SCL (Clock) des Displays mit GPIO22 (Standard-SCL) des ESP32.
Da GPIO21 und GPIO22 die Standard-I2C-Pins des ESP32 sind, funktioniert der Adafruit-Beispielcode meist ohne Änderung. Wähle in der Arduino-IDE unter „Werkzeuge“ > „Board“ einfach Dein ESP32-Board aus und lade den Sketch hoch. Möchtest Du andere Pins verwenden, kannst Du sie mit Wire.begin(SDA_PIN, SCL_PIN); vor display.begin(...) festlegen.