I am using a ESP32 S3 and I have tried 3 different E-inks with the hat. I have my CS to GPIO 10, VCC to 3v3, PWR to 3v3, GND to GND, CLK to GPIO 12, DIN to GPIO 13, DC to GPIO14, RST to GPIO 15, BUSY to GPIO 16. I have been using this code:
#include <GxEPD2_BW.h>
// Define the display
GxEPD2_420 display_driver(/*CS*/ 10, /*DC*/ 14, /*RST*/ 15, /*BUSY*/ 16);
GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(display_driver);
#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
void setup() {
Serial.begin(115200);
Serial.println("Initializing display...");
SPI.begin(12, -1, 13, 10); // CLK, MISO (not used), MOSI, CS
// Initialize the display
display.init(115200, true);
Serial.println("Display initialized!");
// Clear the display
display.fillScreen(GxEPD_WHITE);
display.display();
Serial.println("Screen cleared!");
// Run partial refresh test
partialRefreshTest();
}
void partialRefreshTest() {
// Draw text in one region
display.setPartialWindow(10, 10, 200, 50); // Define a window: x, y, width, height
display.setTextColor(GxEPD_BLACK);
display.setCursor(15, 40);
display.print("Partial Refresh!");
display.display(true); // Perform partial refresh
Serial.println("Partial refresh performed!");
delay(2000);
// Update another region
display.setPartialWindow(10, 70, 200, 50);
display.setCursor(15, 100);
display.print("Second Update!");
display.display(true); // Perform another partial refresh
Serial.println("Second partial refresh performed!");
}
void loop() {
// No continuous updates
}
Sometimes I get busy timeouts in the serial monitor and sometimes I don't. I have also tried GxEPD and GxEPD2 examples and have never seen even a blink from the displays. I have two different displays I have tried. They are 5.83 inch E-ink and a 4.2 inch E-ink.
