Hallo zusammen,
ich beschäftige mich erst seit einigen Tagen rund um das wundervolle Thema Mikrocontroller und bin nach einigen hin und her auch immer zum Erfolg gekommen. Nun wollte ich im nächsten Schritt ein Waveshare 2,13" E-Ink Display an mein ESP32-C3-Mini anbinden. Nach vielen Tests und vergeblichen Troubleshooting bin ich aber an einem Punkt wo ich leider nicht weiterkomme. Es scheitert leider schon grundlegend irgendeinen Text am Display anzuzeigen, daher könnte natürlich auch irgendein Defekt vorliegen. Ich gehe aber eher davon aus, dass ich noch irgendeinen Fehler mache. Hat vielleicht jemand eine Idee, warum das Display keinerlei Inhalt anzeigt? Anbei sind drei Bilder von der Verkabelung und hier noch ein Sketch, mit dem ich es unter anderem getestet habe.
PIN-Belegung:
ESP32-C3 GPIO
GPIO6 MOSI / DIN
GPIO7 SCK / CLK
GPIO5 CS
GPIO4 DC
GPIO3 RST
GPIO2 BUSY
Der dazu passende Sketch:
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h>
#include <SPI.h>
// 🛡️ Sichere Pin-Belegung für ESP32-C3 Mini von Waveshare
#define EINK_CS 5 // Chip Select
#define EINK_DC 4 // Data/Command
#define EINK_RST 3 // Reset
#define EINK_BUSY 2 // Busy
// SPI-Pins
#define EINK_MOSI 6 // DIN
#define EINK_SCK 7 // CLK
// Display-Modell: Waveshare 2.13" V4
GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(EINK_CS, EINK_DC, EINK_RST, EINK_BUSY));
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("🚀 Start");
// SPI-Pins initialisieren
SPI.begin(EINK_SCK, -1, EINK_MOSI); // SCK, MISO (nicht verwendet), MOSI
display.init();
display.setRotation(1); // Querformat
display.setFont(&FreeMonoBold9pt7b);
display.setFullWindow();
// Text zentrieren
String text = "Hello World";
int16_t tbx, tby;
uint16_t tbw, tbh;
display.getTextBounds(text, 0, 0, &tbx, &tby, &tbw, &tbh);
int16_t x = (display.width() - tbw) / 2 - tbx;
int16_t y = (display.height() - tbh) / 2 - tby;
display.firstPage();
do {
Serial.println("⬜ Hintergrund auf Weiß setzen");
display.fillScreen(GxEPD_WHITE); // Hintergrund auf Weiß setzen
display.setTextColor(GxEPD_BLACK); // Textfarbe auf Schwarz setzen
display.setCursor(x, y);
display.print(text);
Serial.println("🖨️ Text 'Hello World' in Schwarz anzeigen");
} while (display.nextPage());
}
void loop() {
// Keine Aktion im Loop erforderlich
}
Die serielle Ausgabe passt zum Sketch und zeigt an, dass der Text dargestellt wird.
Dies ist der verwendete Board: https://www.waveshare.com/product/esp32-c3-zero.htm
Und das Display: https://www.waveshare.com/2.13inch-e-paper-hat.htm
Hat vielleicht jemand einen Tipp, warum das Display keinerlei Reaktion hierbei zeigt?
Vielen Dank schon mal vorab für jeden Hinweis.
Martin


