The sketch run, the problem is that the display ignores the partial screen functions on the sketch. Only reacts to the functions with the line display.setFullWindow () ;. the functions with display.setPartialWindow (); are ignored for the display, even when the functions are executed.
The sketch sends the message: "fast partial mode" in the console if I put an message in the code, so I suppose that the display allows the partial refresh of the screen.
My question is if the GxEPD2 library supports the V2 of the Waveshare 2.9" ePaper display, as the test programs that Waveshare provides are different for V1 and V2 2.9" displays.
The answer to your question is unknown, at least for me.
You should provide a link to your display, to the Waveshare website. So we would know exactly which display you have. E.g. b/w or 3 color, on a board with level converters and the "clever" reset circuit?
You could ask Waveshare, which panel (most likely from Good Display) is used, or which controller the panel uses.
You could report the inking on the flex connector of the panel, then I can compare with the ones I have.
If you report an issue with use of GxEPD2 with your e-paper display, I also need to know which processor/board you use, and which board you select to compile for.
And I need to know the constructor line you selected (or the driver class for new style).
Diagnostic output from serial monitor can also be helpful; in a code window please.
Note that the "clever" reset circuit needs use of shortened reset pulse. See README.md.
My GDM029T94 has the same inking. My panel supports differential refresh, fast partial update.
Your _Update_Part times are way too short, should be about 0.5 seconds.
Most likely the waveform table set for refresh mode 2 is empty (in the controller OTP).
You should verify missing fast partial update with the Waveshare demo code, and then ask for replacement.
You can use your display with slow partial refresh, if you set the attribute hasFastPartialUpdate to false.
Jean-Marc
Added: Good Display has a GDEY029T94 panel, with same specifications. But different inking.
I will check their partial update demo code for differences.
Update: hasFastPartialUpdate to false has no effect (not implemented this way in this class).
I have taken a look at the Waveshare library driver for epd2in9_V2.
This driver has and loads a partial update waveform table.
There is a unsigned char WF_PARTIAL_2IN9[159].
Conclusion: GxEPD2 supports the GDEM029T94 panel from Good Display, but not the 2.9" b/w V2 from Waveshare.
If anyone wants the Waveshare 2.9V2 supported, then he either has to donate that display, or urge Waveshare to send me a free sample.
I am determined to not buy this display. I am willing to do some voluntary work, but not if I have to buy a device I am not interested in for personal use.
In the meantime I did try to connect Waveshare sales, to ask if I can get a free sample of the 2.9" b/w board with my next order. I didn't even get an answer.
I have to apologize. The answer was in my spam folder, but Outlook didn't show it as nonempty.
So I decided to order the ESP32 e-paper driver boards from a different shop.
I selected SpotPear; they have a good rating.
I could work for about 10 minutes for the price of that board. Engineer hours are expensive in Switzerland. As Waveshare doesn't appreciate my work, I will not spend time on Waveshare boards anymore.
There is a list of panels supported in README.md, but no list of supported Waveshare boards.
Jean-Marc, I appreciate all the work and support you are giving for this project, it really matters. How can we donate to the project? Should I pm you for the details? I respect your decision to not to spend time on the board as well.
I played with Waveshare 2.9 BW board a little bit, it looks like there is something weird going on with
when you call this it works for the first time you'll display a page, but afterwards you cannot print anything new nor do a full refresh, I think there is a minor problem about that function. All full window refresh work with this
display.setFullWindow();
I'm using this line to start it up
GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94
# and in setup()
display.init(115200);
I respect your decision on not willing to support this board since they don't value your time. I'm willing to donate $$ for the board or donate $$ just for the sake of supporting the project (no work requested)
I'm planning to order this board:
It is a GDEW029T5D, so hopefully partial refresh work on this board!