Digitales Klingelschild aus nur zwei Komponenten? Hier findest du die Bauanleitung zu diesem ESP8266 Projekte. Und passend dazu gibt selbstverständlich auch wieder ein Video auf meinem YouTube-Kanal.
Inhalt
Hinweis (Disclaimer)
Die in meinen Beiträgen gezeigten Inhalte dienen ausschließlich zu Informations- und Unterhaltungszwecken. Es liegt in der Verantwortung der Leser, jegliche Nachbauten, die auf meinen Inhalten basieren, auf eigene Gefahr durchzuführen
Bauteile
Folgende Bauteile werden für diese Projekt benötig:
- Ein ESP32 oder ESP8266
- OLED Display
Aufbau
Die Anschlüsse sind folgermaßen auszuführen:
OLED-Pin → ESP8266 Pin
VCC → 3.3V
GND → GND
SCL → D1 (GPIO5)
SDA → D2 (GPIO4)

Codieren lernen mit Chat-GPT
Den nachfolgenden Code kann man ohne Probleme mittels eine KI wie ChatGPT oder DeepSeek erstellen. Dabei gibt es zwei Vorteile:
- Erfahrene Programmierer ersparen sich eine Menge Zeit
- Anfänger können mit einer KI das Programmieren lernen
#include
#include
#include
#include
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // Reset-Pin nicht verwendet
#define SCREEN_ADDRESS 0x3C // I2C-Adresse des Displays
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
String text = "Hallo, ESP8266!"; // Text für die Laufschrift
int textX = SCREEN_WIDTH;
int textSpeed = 2; // Geschwindigkeit der Laufschrift (je höher, desto schneller)
int textSize = 5; // Schriftgröße anpassbar
void setup() {
WiFi.mode(WIFI_OFF); // WLAN-Funktion deaktivieren
WiFi.forceSleepBegin(); // WLAN vollständig abschalten
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
display.clearDisplay();
display.setTextSize(textSize);
display.setTextColor(SSD1306_WHITE);
display.setTextWrap(false); // Sicherstellen, dass der Text nicht umgebrochen wird
display.display(); // Sicherstellen, dass das Display am Anfang leer ist
}
void loop() {
display.clearDisplay(); // Display vor jeder neuen Zeichnung löschen
int textY = (SCREEN_HEIGHT - (8 * textSize)) / 2; // Vertikale Zentrierung
display.setCursor(textX, textY);
display.print(text);
display.display();
textX -= textSpeed;
if (textX < -((int)text.length() * 6 * textSize)) { // Korrektur der Reset-Bedingung
textX = SCREEN_WIDTH;
}
delay(50); // Anpassung der Geschwindigkeit
}