M5Paper: fast update to display keyboard entries
-
Hi all,
I have designed a keyboard on the M5Paper to type in letters and to display the content on the ePaper display. Currently I use "canvas.pushCanvas(0,0,UPDATE_MODE_DU4);" which seems to me to be the fastest update mode.However when I type in the letters, I still have to wait "too long" until the display is updated.
What can you recommend being the fastest way to display the new letters? Is there a possibility to partially update the display? I tried "M5.EPD.UpdateArea(0,60,540,400,UPDATE_MODE_GL16);" but nothing changes.
Thanks.
DiWa
CODE (needful part of it):
void Tastatur(){
canvas.fillCanvas(0);
Header();
canvas.setTextArea(10, 60, 520, 460);
canvas.setTextSize(48);
canvas.print(Eingabe);//Raster
canvas.setTextSize(32);
canvas.drawRoundRect( 10, 430, 168, 80, 10, 15);
canvas.drawRoundRect(186, 430, 168, 80, 10, 15);
canvas.drawRoundRect(362, 430, 168, 80, 10, 15);
canvas.fillRoundRect( 11, 431, 166, 78, 9, 2);
canvas.fillRoundRect(187, 431, 166, 78, 9, 2);
canvas.fillRoundRect(363, 431, 166, 78, 9, 2);
canvas.drawString("wiki", 65, 455);
canvas.drawString("wo", 250, 455);
canvas.drawString("123", 415, 455);//canvas.createRender(48, 256);
canvas.setTextSize(48);
canvas.drawRoundRect( 10, 518, 80, 80, 10, 15); canvas.drawString("a", 35, 538);
canvas.drawRoundRect( 98, 518, 80, 80, 10, 15); canvas.drawString("b", 123, 538);
canvas.drawRoundRect(186, 518, 80, 80, 10, 15); canvas.drawString("c", 211, 538);
canvas.drawRoundRect(274, 518, 80, 80, 10, 15); canvas.drawString("d", 299, 538);
canvas.drawRoundRect(362, 518, 80, 80, 10, 15); canvas.drawString("e", 387, 538);
canvas.drawRoundRect(450, 518, 80, 80, 10, 15); canvas.drawString("f", 475, 538);
canvas.drawRoundRect( 10, 606, 80, 80, 10, 15); canvas.drawString("g", 35, 626);
canvas.drawRoundRect( 98, 606, 80, 80, 10, 15); canvas.drawString("h", 123, 626);
canvas.drawRoundRect(186, 606, 80, 80, 10, 15); canvas.drawString("i", 216, 626);
canvas.drawRoundRect(274, 606, 80, 80, 10, 15); canvas.drawString("j", 305, 626);
canvas.drawRoundRect(362, 606, 80, 80, 10, 15); canvas.drawString("k", 387, 626);
canvas.drawRoundRect(450, 606, 80, 80, 10, 15); canvas.drawString("l", 475, 626);
canvas.drawRoundRect( 10, 694, 80, 80, 10, 15); canvas.drawString("m", 33, 714);
canvas.drawRoundRect( 98, 694, 80, 80, 10, 15); canvas.drawString("n", 123, 714);
canvas.drawRoundRect(186, 694, 80, 80, 10, 15); canvas.drawString("o", 211, 714);
canvas.drawRoundRect(274, 694, 80, 80, 10, 15); canvas.drawString("p", 299, 714);
canvas.drawRoundRect(362, 694, 80, 80, 10, 15); canvas.drawString("q", 387, 714);
canvas.drawRoundRect(450, 694, 80, 80, 10, 15); canvas.drawString("r", 475, 714);
canvas.drawRoundRect( 10, 782, 80, 80, 10, 15); canvas.drawString("s", 35, 802);
canvas.drawRoundRect( 98, 782, 80, 80, 10, 15); canvas.drawString("t", 123, 802);
canvas.drawRoundRect(186, 782, 80, 80, 10, 15); canvas.drawString("u", 211, 802);
canvas.drawRoundRect(274, 782, 80, 80, 10, 15); canvas.drawString("v", 299, 802);
canvas.drawRoundRect(362, 782, 80, 80, 10, 15); canvas.drawString("w", 387, 802);
canvas.drawRoundRect(450, 782, 80, 80, 10, 15); canvas.drawString("x", 475, 802);
canvas.drawRoundRect( 10, 870, 80, 80, 10, 15); canvas.drawString("y", 35, 890);
canvas.drawRoundRect( 98, 870, 80, 80, 10, 15); canvas.drawString("z", 123, 890);
canvas.drawRoundRect(186, 870, 80, 80, 10, 15); canvas.drawString("?", 211, 890);canvas.drawRoundRect(275, 870, 80, 80, 10, 15); canvas.fillRoundRect(276, 871, 78, 78, 9, 2); canvas.drawString("_", 305, 890);
canvas.drawRoundRect(362, 870, 80, 80, 10, 15); canvas.fillRoundRect(363, 871, 78, 78, 9, 2); canvas.drawString("<-", 375, 890);
canvas.drawRoundRect(450, 870, 80, 80, 10, 15); canvas.fillRoundRect(451, 871, 78, 78, 9, 2); canvas.drawString("OK", 455, 890);canvas.pushCanvas(0,0,UPDATE_MODE_GC16);
int touch = 0;
int Auswahl = 0;
int Leer_Stelle = 0;
int Zeichen = 0;while(Auswahl == 0){
if(M5.TP.avaliable()){
if(!M5.TP.isFingerUp()){
M5.TP.update();
bool is_update = false;
for(int i=0;i<2; i++){
tp_finger_t FingerItem = M5.TP.readFinger(i);
if((point[i][0]!=FingerItem.x)||(point[i][1]!=FingerItem.y)){
is_update = true;
point[i][0] = FingerItem.x;
point[i][1] = FingerItem.y;
if (FingerItem.x >= 430 && FingerItem.x < 510 && FingerItem.y >= 360 && FingerItem.y <= 530) {
Serial.println("wiki");
canvas.setTextSize(32);
Eingabe = "Schreib einen wiki\nArtikel über\n";
canvas.pushCanvas(0,0,UPDATE_MODE_DU4);
}
if (FingerItem.x >= 430 && FingerItem.x < 510 && FingerItem.y >= 274 && FingerItem.y <= 352) {
Serial.println("wo");
canvas.setTextSize(32);
Eingabe = "wo finde ich ";
canvas.pushCanvas(0,0,UPDATE_MODE_GC16);
}
if (FingerItem.x >= 430 && FingerItem.x < 510 && FingerItem.y >= 98 && FingerItem.y <= 178) {
Serial.println("123");
Sonderzeichen();
}
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 450 && FingerItem.y <= 530) Eingabe = Eingabe + "a"; //Serial.print("a");
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 362 && FingerItem.y <= 442) Eingabe = Eingabe + "b"; //Serial.print("b");
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 274 && FingerItem.y <= 352) Eingabe = Eingabe + "c"; //Serial.print("c");
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 186 && FingerItem.y <= 266) Eingabe = Eingabe + "d"; //Serial.print("d");
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 98 && FingerItem.y <= 178) Eingabe = Eingabe + "e"; //Serial.print("e");
if (FingerItem.x >= 518 && FingerItem.x < 598 && FingerItem.y >= 10 && FingerItem.y <= 90) Eingabe = Eingabe + "f"; //Serial.print("f");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 450 && FingerItem.y <= 530) Eingabe = Eingabe + "g"; //Serial.print("g");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 362 && FingerItem.y <= 442) Eingabe = Eingabe + "h"; //Serial.print("h");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 274 && FingerItem.y <= 352) Eingabe = Eingabe + "i"; //Serial.print("i");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 186 && FingerItem.y <= 266) Eingabe = Eingabe + "j"; //Serial.print("j");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 98 && FingerItem.y <= 178) Eingabe = Eingabe + "k"; //Serial.print("k");
if (FingerItem.x >= 606 && FingerItem.x < 686 && FingerItem.y >= 10 && FingerItem.y <= 90) Eingabe = Eingabe + "l"; //Serial.print("l");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 450 && FingerItem.y <= 530) Eingabe = Eingabe + "m"; //Serial.print("m");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 362 && FingerItem.y <= 442) Eingabe = Eingabe + "n"; //Serial.print("n");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 274 && FingerItem.y <= 352) Eingabe = Eingabe + "o"; //Serial.print("o");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 186 && FingerItem.y <= 266) Eingabe = Eingabe + "p"; //Serial.print("p");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 98 && FingerItem.y <= 178) Eingabe = Eingabe + "q"; //Serial.print("q");
if (FingerItem.x >= 694 && FingerItem.x < 774 && FingerItem.y >= 10 && FingerItem.y <= 90) Eingabe = Eingabe + "r"; //Serial.print("r");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 450 && FingerItem.y <= 530) Eingabe = Eingabe + "s"; //Serial.print("s");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 362 && FingerItem.y <= 442) Eingabe = Eingabe + "t"; //Serial.print("t");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 274 && FingerItem.y <= 352) Eingabe = Eingabe + "u"; //Serial.print("u");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 186 && FingerItem.y <= 266) Eingabe = Eingabe + "v"; //Serial.print("v");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 98 && FingerItem.y <= 178) Eingabe = Eingabe + "w"; //Serial.print("w");
if (FingerItem.x >= 782 && FingerItem.x < 862 && FingerItem.y >= 10 && FingerItem.y <= 90) Eingabe = Eingabe + "x"; //Serial.print("x");
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 450 && FingerItem.y <= 530) Eingabe = Eingabe + "y"; //Serial.print("y");
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 362 && FingerItem.y <= 442) Eingabe = Eingabe + "z"; //Serial.print("z");
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 274 && FingerItem.y <= 352) Eingabe = Eingabe + "?"; //Serial.print("z");
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 186 && FingerItem.y <= 266) { //Serial.print("Leer");
Eingabe = Eingabe + " ";
Leer_Stelle = Eingabe.length() - 1;
}
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 98 && FingerItem.y <= 178) { //Serial.print("<-");
Eingabe_len = Eingabe.length();
if (Eingabe_len >= 1) Eingabe = Eingabe.substring(0, Eingabe_len - 1);
canvas.fillRect(0, 52, 540, 360, 0);
}
if (FingerItem.x >= 870 && FingerItem.x < 950 && FingerItem.y >= 10 && FingerItem.y <= 90) {
Auswahl = 1;
Serial.println("OK"); Serial.println();
}
int Zeilenlaenge = 20;
canvas.setTextSize(48);
canvas.setTextArea(10, 60, 520, 460);
Zeichen = Zeichen + 1;
if (Zeichen > Zeilenlaenge){
Eingabe.setCharAt(Leer_Stelle, '\n');
canvas.fillRect(0, 60, 540, 360, 0);
Zeichen = Eingabe.length() - Leer_Stelle;
}
canvas.print(Eingabe);
canvas.pushCanvas(0,0,UPDATE_MODE_DU4);
}
}
}
}
}
Eingabe.replace('\n', ' ');
Serial.println(Eingabe);
monitorWiFi();
canvas.setTextArea(10, 60, 520, 460);
canvas.drawRect(100, 300, 330, 80, 15); canvas.fillRect(101, 301, 328, 78, 2);
canvas.drawString("processing ...", 110, 320);
canvas.pushCanvas(0,0,UPDATE_MODE_GL16);
Serial.println(openAI_text(Eingabe));
}
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