M5Paper partial Update Canvas
-
Found in the documentation the command
Function: flushes the data in the buffer to the specified area of the screen in the specified mode.m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode);
Can I use it for partial updating the canvas, if yes how to use this command?
Cheers,
Jan -
m5epd_err_t UpdateArea(100,100,100,100)
would update an area of 100 px X 100px with the top left corner starting at position X=100, Y=100. -
@ajb2k3
Thanks, I wont to update (redraw) every time a new character, without updating the whole screen. But the command is not do that what I expect.
Her my short test program. What is wrong ont it?#include <M5EPD.h>
M5EPD_Canvas canvas1(&M5.EPD);String testString[]={"A","B","C","D","E","F","G"};
void setup() {
M5.begin();
M5.TP.SetRotation(180);
M5.EPD.SetRotation(180);
M5.EPD.Clear(true);
canvas1.createCanvas(960, 540);
canvas1.loadFont("/fonts/GenSenRounded-R.ttf", SD);
canvas1.createRender(60);
canvas1.setTextSize(60);
canvas1.drawString("A",20,20);
canvas1.pushCanvas(0, 0, UPDATE_MODE_GL16);
}void loop() {
for (int i=1; i<7; i++)
{
canvas1.drawString(testString[i],20,20);
/* m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode); */
M5.EPD.UpdateArea(0,0,100,100,UPDATE_MODE_GL16);
delay(1000);
}
}Cheers
Jan. -
You need to also include the M5stack libraries.
What do you mean "not what you expect"
any error message?
Can you post a picture of the screen? -
@ajb2k3 said in M5Paper partial Update Canvas:
You need to also include the M5stack libraries.
Wat do you mean with that? This simple program is complete or not?
-
@ajb2k3
I espect to see the characters be changed at the fix place. Do you have try to run my simple program? -
As mentioned in the other thread, the missing step is transferring the canvas framebuffer to the EPD.
If your loop function is changed as below, it works as you expect.void loop() { for (int i=1; i<7; i++) { canvas1.drawString(testString[i],20,20); /* m5epd_err_t UpdateArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h, m5epd_update_mode_t mode); */ M5.EPD.WriteFullGram4bpp((uint8_t*)canvas1.frameBuffer()); M5.EPD.UpdateArea(0,0,100,100,UPDATE_MODE_GL16); delay(1000); } }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login