I really need some help with my new epaper modules. I'm not sure whether I've bought some bad epaper or my coding is bad.
I wasn't able to get the whites to stay whites.
I have attached images here. Right after the code finished setup, the display was perfect, white being white, black being black and yellow being good-enough. but a few seconds after that, you can see the yellow particles started appearing on the display (left hand side) and in less than 10 seconds, all the whites became yellowish. I tried different patterns, drawing bitmaps etc, but the edges always started turning yellowish and then all the whites ended up very yellowish after around 10 sec.
FYI, I am using D1 mini (Esp8266), wired up with dupont / breadboard to the DESPI-C02 display driver directly (no resister or anything in between). Wiring was exactly the same way as the suggested wiring in GxEPD2 library ( BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, SCK -> D5, SDI -> D7, GND -> GND, 3.3V -> 3.3V ). The display is a 2.9" B/W/Yellow GDEW029C32.
For power, I tried both with my laptop USB port as well as a 5V3.1A USB charger socket. Same problem. also, I bought and tried 2 modules , both displayed the same problem.
The code I used is as follows. I tried hibernate() instead of powerOff() or not doing powerOff at all. Nothing helped.
I feel very frustrated, any help would be greatly appreciated. Thanks.
#define ENABLE_GxEPD2_GFX 0
#include <GxEPD2_3C.h>
#define MAX_DISPLAY_BUFFER_SIZE 800
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
#include <Fonts/FreeMonoBold12pt7b.h>
#include <Fonts/FreeMonoBold24pt7b.h>
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println("setup");
delay(100);
display.init(115200);
display.setFullWindow();
//display.firstPage();
display.fillScreen(GxEPD_WHITE);
display.setRotation(1);
display.fillRect(0, 0, 296, 30, GxEPD_BLACK);
display.fillRect(0, 32, 128, 128, GxEPD_RED);
display.setTextColor(GxEPD_WHITE);
display.setFont(&FreeMonoBold12pt7b);
display.setCursor(0, 0);
display.println();
display.println("Very expensive stuff");
display.setCursor(0, 24);
display.setFont(&FreeMonoBold24pt7b);
display.println();
display.println(" ON ");
display.println("SALE");
display.setCursor(150, 90);
display.setTextColor(GxEPD_BLACK);
display.println("$100");
//while (display.nextPage());
display.display();
display.powerOff();
Serial.println("done");
}
void loop() {};