Hello , new guy here - @ZinggJM I have tried to follow all the rules stated in the guidelines and I hope I am contributing as well as asking.
My end goal is to start my e-paper display with a basic output, then (eventually) update parts of the screen with the readouts of some sensors. These sensors will push an update every 10-15 seconds, so I want to be able to update the screen without having to clear the screen and redraw everything.
The example code provided by Waveshare works for a "HelloWorld" but is very limited. It also seems to update very quickly when I make changes. I.e. ~3 seconds for a full update (I haven't tried partial updates yet, I'm hoping these are even quicker and less intrusive (they don't force black/white/black/output type updates)).
Getting started with gxEPD2, using 5.83inch e-Paper HAT
and E-Paper Shield
was a small challenge having to read through a lot of the pages of this thread. Through a lot of trial and error (and a lot of BusyTimeout!
responses) the key to getting any response from the display was related to The "clever" reset functionality "feature"
.
HelloWorld.ino
display.init(115200, true, 2, false);
GxEPD2_display_selection.h
GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, GD7965
GxEPD2_display_selection.h
GxEPD2_BW <GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, GD7965
*GxEPD2_display_selection.h*
I also tried out the none Universal e-paper Raw Panel Driver Shield
versions, among others, before realising there was a shield version (the init()
call above was key though). This wasted a lot of time, RTFM is all I can say.
Eureka! I can now make changes to the display!
To be clear, this solution works (again HelloWorld
), the value of the libraries from @ZinggJM and Adafruit cannot be understated or underappreciated!
The issue I am having is that from the time I click Upload
in the IDE - through to the time the display updates, so far seems to be random. I have included a sample of the output from the serial monitor below, I've added a blank line (turns out formatting here decides otherwise ) between code uploads (assume `_PowerOn' is within 1-3 seconds of the code being uploaded).
22:21:32.792 -> _PowerOn : 174900
22:23:51.594 -> _Update_Full : 6680088
22:26:05.752 -> _PowerOff : 39840
22:47:37.391 -> _PowerOn : 174688
22:50:01.975 -> _Update_Full : 6680344
22:52:22.023 -> _PowerOff : 39876
23:23:57.384 -> _PowerOn : 174688
23:26:21.982 -> _Update_Full : 6680308
23:28:06.587 -> _PowerOn : 171636
23:30:14.497 -> _PowerOn : 184988
23:32:14.857 -> Busy Timeout!
23:32:14.857 -> _Update_Full : 20000636
23:32:34.884 -> Busy Timeout!
23:32:34.884 -> _PowerOff : 20000192
23:32:54.060 -> _PowerOn : 171640
23:35:03.812 -> _Update_Full : 6681468
23:37:08.672 -> _PowerOff : 39852
I've attached my current code for reference.
I'm not sure if this is a hardware issue (i.e. data transmission rates), a software issue, or a combination of both. I'm hoping someone can point me in the right direction.
EInk_Demo.ino (1.5 KB)