Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Mikrocontroller
    • Arduino
    • ESP32 & Co.
    • Calliope Mini
    • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

ESP32-S3 RLCD Display ansteuern: So klappt die Programmierung mit Arduino IDE (Teil 2)

Veröffentlicht am 5. Mai 20265. Mai 2026 von Stefan Draeger

Im ersten Teil habe ich mir das Board im Detail angeschaut und einen ersten Eindruck gesammelt.
Jetzt wird es praktisch.

In diesem Beitrag zeige ich dir, wie du das ESP32-S3 RLCD Display von Waveshare ganz bequem mit der Arduino IDE programmierst und erste Inhalte auf dem Display darstellst.

Dank der Unterstützung von LVGL (Light and Versatile Graphics Library) ist der Einstieg überraschend einfach. Wenn du bereits Erfahrungen mit dem bekannten CYD (Cheap Yellow Display) gesammelt hast, wirst du dich hier sehr schnell zurechtfinden.

👉 Ziel ist es, nicht nur das Demo-Programm zu nutzen, sondern eigene Inhalte wie Text, Werte oder später sogar kleine Dashboards auf dem RLCD darzustellen.

Dieses Video auf YouTube ansehen.

Transparenzhinweis:
Das Gerät wurde mir von Waveshare für dieses Review kostenfrei zur Verfügung gestellt. Ich freue mich immer, wenn ich in dieser Form unterstützt werde und neue Hardware frühzeitig testen kann.

Selbstverständlich hat dies keinen Einfluss auf meine Bewertung – ich teile wie gewohnt meine ehrliche Meinung und praktische Erfahrungen mit dem Board.

Inhaltsverzeichnis

  • Arduino IDE für das ESP32-S3 RLCD einrichten
    • 1. ESP32 Boardpaket installieren
    • 2. Board installieren
    • 3. Richtiges Board auswählen
    • 4. Boardkonfiguration
  • Erstes Beispiel: „Hello World!“ auf dem RLCD anzeigen
    • Zusätzliche Schriftgrößen in LVGL aktivieren
    • Datei anpassen
    • Schriftgrößen aktivieren
    • Hintergrund
  • Fazit: Einstieg geschafft – jetzt wird es spannend
    • Ausblick: Vom „Hello World“ zum echten Projekt
  • Quellen & weiterführende Links

Arduino IDE für das ESP32-S3 RLCD einrichten

Damit wir das Display programmieren können, müssen wir zunächst die Arduino IDE vorbereiten.

1. ESP32 Boardpaket installieren

  • Arduino IDE öffnen
  • Datei → Einstellungen
  • folgende URL hinzufügen:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

2. Board installieren

  • Werkzeuge → Board → Boardverwalter
  • nach ESP32 suchen
  • „esp32 by Espressif Systems“ installieren
Arduino IDE - einrichten der Boardtreiber für ESP32 von Espressif - Step1
Arduino IDE – einrichten der Boardtreiber für ESP32 von Espressif – Step1
Arduino IDE - einrichten der Boardtreiber für ESP32 von Espressif - Step2
Arduino IDE – einrichten der Boardtreiber für ESP32 von Espressif – Step2
Arduino IDE - einrichten der Boardtreiber für ESP32 von Espressif - Step3
Arduino IDE – einrichten der Boardtreiber für ESP32 von Espressif – Step3
Arduino IDE - einrichten der Boardtreiber für ESP32 von Espressif - Step4
Arduino IDE – einrichten der Boardtreiber für ESP32 von Espressif – Step4

3. Richtiges Board auswählen

Auf dem Board ist ein ESP32-S3 verbaut, somit wählen wir unter Werkzeuge > Boards > esp32 das Modul ESP32S3 Dev Module aus.

Arduino IDE - Auswahl des ESP32-S3
Arduino IDE – Auswahl des ESP32-S3
Arduino IDE - Konfiguration des ESP32-S3
Arduino IDE – Konfiguration des ESP32-S3

Für serielle Ausgaben muss zusätzlich noch die Auswahl bei der Konfiguration „USB CDC On Boot“ auf Enabled gesetzt werden.

4. Boardkonfiguration

Damit das Board korrekt angesteuert werden kann, müssen zunächst die richtigen Einstellungen in der Boardkonfiguration vorgenommen werden.

  • USB CDC On Boot > Enabled
  • Flash Mode > „QIO 80 MHz“
  • Flash Size > „16MB (128Mb)“
  • Partition Scheme > „16M Falsh (3MB APP/9.9 FATS)“
  • PSRAM >“OPI PSRAM“
Boardkonfiguration für ESP32-S3 RLCD Display von Waveshare in der Arduino IDE

Wird diese Konfiguration nicht korrekt gesetzt, kommt es zu einem Assertion Error. Im seriellen Monitor der Arduino IDE erscheint dann folgende Fehlermeldung:

E (285) esp_core_dump_flash: Core dump flash config is corrupted! 
CRC=0x7bd5c66f instead of 0x0 
E (294) esp_core_dump_elf: Elf write init failed! 
E (298) esp_core_dump_common: Core dump write failed with error=-1 
Rebooting... 
ESP-ROM:esp32s3-20210327 
Build:Mar 27 2021 
rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT) 
Saved PC:0x4037f489 
SPIWP:0xee 
mode:DIO, clock div:1 
load:0x3fce2820,len:0x10cc 
load:0x403c8700,len:0xc2c 
load:0x403cb700,len:0x30c0 
entry 0x403c88b8 

assert failed: DisplayPort::DisplayPort(int, int, int, int, int, int, int, spi_host_device_t) 
C:\Users\stefa\Downloads\ESP32-S3-RLCD-4.2-main\ESP32-S3-RLCD-4.2-main\02_Example\Arduino\09_LVGL_V9_Test

Erstes Beispiel: „Hello World!“ auf dem RLCD anzeigen

Nachdem die Arduino IDE korrekt eingerichtet ist und das Board erkannt wird, starten wir mit einem einfachen ersten Beispiel.

👉 Ziel: Eine erste Ausgabe auf dem Display – unser klassisches „Hello World!“.

Ausgabe von Hello World auf dem RLCD Display des ESP32-S3 von Waveshare #1
Ausgabe von Hello World auf dem RLCD Display des ESP32-S3 von Waveshare #2
Ausgabe von Hello World auf dem RLCD Display des ESP32-S3 von Waveshare #3
Ausgabe von Hello World auf dem RLCD Display des ESP32-S3 von Waveshare #4

Als Grundlage nutze ich das von Waveshare bereitgestellte Beispielprojekt: 👉 09_LVGL_V9_Test

Dieses findest du im offiziellen Repository unter:
ESP32-S3-RLCD-4.2/02_Example/Arduino/09_LVGL_V9_Test/

#include "display_bsp.h"
#include "src/app_bsp/lvgl_bsp.h"
#include "src/ui_src/generated/gui_guider.h"

static lv_ui init_ui;

DisplayPort RlcdPort(12, 11, 5, 40, 41, 400, 300);

static void Lvgl_FlushCallback(lv_display_t *drv, const lv_area_t *area, uint8_t *color_map) {
  uint16_t *buffer = (uint16_t *)color_map;
  for (int y = area->y1; y <= area->y2; y++) {
    for (int x = area->x1; x <= area->x2; x++) {
      uint8_t color = (*buffer < 0x7fff) ? ColorBlack : ColorWhite;
      RlcdPort.RLCD_SetPixel(x, y, color);
      buffer++;
    }
  }
  RlcdPort.RLCD_Display();
  lv_disp_flush_ready(drv);
}

void setup() {
  RlcdPort.RLCD_Init();
  Lvgl_PortInit(400, 300, Lvgl_FlushCallback);

  if (Lvgl_lock(-1)) {
    create_hello_world_pyramid();
    Lvgl_unlock();
  }
}

void loop() {
   vTaskDelay(pdMS_TO_TICKS(1000));
}

void create_hello_world_pyramid() {
  lv_obj_t *screen = lv_scr_act();
  lv_obj_set_style_bg_color(screen, lv_color_white(), LV_PART_MAIN);
  lv_obj_set_style_bg_opa(screen, LV_OPA_COVER, LV_PART_MAIN);

  const lv_font_t *fonts[] = {
    &lv_font_montserrat_48,
    &lv_font_montserrat_40,
    &lv_font_montserrat_32,
    &lv_font_montserrat_24,
    &lv_font_montserrat_18,
    &lv_font_montserrat_12,
  };

  int yPositions[] = { 25, 85, 135, 180, 220, 250 };

  for (int i = 0; i < 6; i++) {
    lv_obj_t *label = lv_label_create(screen);
    lv_label_set_text(label, "Hello World!");

    lv_obj_set_style_text_font(label, fonts[i], LV_PART_MAIN);
    lv_obj_set_style_text_color(label, lv_color_black(), LV_PART_MAIN);

    lv_obj_align(label, LV_ALIGN_TOP_MID, 0, yPositions[i]);
  }
}

Zusätzliche Schriftgrößen in LVGL aktivieren

Für unser Beispiel möchten wir verschiedene Schriftgrößen verwenden. Standardmäßig sind in LVGL jedoch nicht alle Fonts aktiviert, um Speicher zu sparen.

👉 Deshalb müssen wir einige Schriftgrößen manuell freischalten.

Datei anpassen

Öffne die Datei:

C:\Users\<Benutzername>\Documents\Arduino\libraries\lvgl\lv_conf.h

👉 Scrolle dort zum Abschnitt „FONT USAGE“.

Schriftgrößen aktivieren

Setze die folgenden Einträge von 0 auf 1:

#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 1
#define LV_FONT_MONTSERRAT_24 1
#define LV_FONT_MONTSERRAT_32 1
#define LV_FONT_MONTSERRAT_40 1
#define LV_FONT_MONTSERRAT_48 1

👉 Dadurch werden die jeweiligen Schriftgrößen im Projekt verfügbar.

Hintergrund

LVGL ist so aufgebaut, dass nur die tatsächlich benötigten Ressourcen eingebunden werden.
👉 Das spart Speicher – ist aber am Anfang etwas ungewohnt.

Fazit: Einstieg geschafft – jetzt wird es spannend

Mit der richtigen Konfiguration in der Arduino IDE und der Einrichtung von LVGL ist der Einstieg in das Waveshare ESP32-S3 RLCD Display deutlich einfacher, als man zunächst vermuten würde.

👉 Bereits mit wenigen Zeilen Code lässt sich eine eigene Ausgabe auf dem Display realisieren.

Besonders positiv fällt dabei auf:

  • LVGL ermöglicht eine sehr flexible Darstellung von Inhalten
  • das RLCD-Display reagiert schnell und ohne störendes Flackern
  • die Kombination aus ESP32-S3 und Display bietet eine starke Basis für eigene Projekte

Natürlich gibt es auch ein paar Stolpersteine – insbesondere bei der Boardkonfiguration und den benötigten Fonts. Hat man diese Hürden jedoch einmal genommen, steht eigenen Projekten nichts mehr im Weg.

👉 Genau hier wird es jetzt interessant.

Ausblick: Vom „Hello World“ zum echten Projekt

Im nächsten Schritt reicht ein statischer Text natürlich nicht mehr aus.

👉 Deshalb zeige ich dir im nächsten Beitrag ein konkretes Praxisprojekt:

  • Daten aus einer öffentlichen API abrufen
  • Darstellung als Newsticker
  • Kombination aus Text und Bildern mit LVGL
  • Dynamische Aktualisierung der Inhalte

👉 Ziel: Ein echtes, praxisnahes Dashboard auf dem RLCD-Display.

Quellen & weiterführende Links

Für diesen Beitrag habe ich auf die offiziellen Dokumentationen und Beispiele von Waveshare zurückgegriffen. Wenn du tiefer in das Thema einsteigen möchtest, findest du hier die wichtigsten Ressourcen:

  • Offizielle Dokumentation & Ressourcen
    https://docs.waveshare.com/ESP32-S3-RLCD-4.2/Resources-And-Documents
  • Produktseite mit technischen Details
    https://www.waveshare.com/esp32-s3-rlcd-4.2.htm
  • Weitere Beispielprojekte & Tutorials (Arduino)
    https://docs.waveshare.com/ESP32-Arduino-Tutorials/Fun-Project
  • GitHub Repository mit allen Beispielen
    https://github.com/waveshareteam/ESP32-S3-RLCD-4.2/tree/main

Letzte Aktualisierung am: 05. Mai 2026

Foto von Stefan Draeger
Über den Autor

Stefan Draeger — Entwickler & Tech-Blogger

Ich zeige praxisnah, wie du Projekte mit Arduino, ESP32 und Smarthome-Komponenten umsetzt – Schritt für Schritt, mit Code und Schaltplänen.

Mehr Artikel von Stefan →

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • QR-Code Generator
  • Passwort Generator: Sichere Passwörter & Passphrasen erstellen
  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 015565432686
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2026 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
  • Optionen verwalten
  • Dienste verwalten
  • Verwalten von {vendor_count}-Lieferanten
  • Lese mehr über diese Zwecke
Einstellungen anzeigen
  • {title}
  • {title}
  • {title}