Hallo,
I try to control a Wavesher E-Paper 2.9 V2 with mit Heltec ESP32 Wifi Lora V2 with GitHub - ZinggJM/GxEPD2: Arduino Display Library for SPI E-Paper Displays Library.
Therefore I have a loop where I, everytime I get a keyboardinput, append/print/partial update the charactor on the display.
The problem is that it seems that there a two different pages, where the characters are stored and the display only shows these or that characters (little hard to explain - here is an example):
Keyboard-Input: "Hello World how are you"
Display-Outcome: Sometimes something like "H ll W rld ow ar y u" and sometimes "" a o o h e o " (the missing characters of the first string).
Everytime I update the display it changes (very fast) between the one an teh other string and randomly stop at on string an shows that.
Code:
#define ENABLE_GxEPD2_GFX 0
#define MAX_MESSAGES 10
#define MAILBOXGUI_LINES 5
#define MAX_EPD_PREVIEW_LINES 3
#define MAX_EPD_PREVIEW_ROWS 21
#include <GxEPD2_BW.h>
#include <Fonts/FreeMonoBold9pt7b.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/FreeMono9pt7b.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/FreeSans9pt7b.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/FreeSerif9pt7b.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/Org_01.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/Picopixel.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/TomThumb.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include <Fonts/Tiny3x3a2pt7b.h> // from Adafruit // ..\Arduino\libraries\Adafruit_GFX_Library
#include "GxEPD2_display_selection_new_style.h"
void setup()
{
// DISPLAY
display.init(115200);
displayInit(1, &FreeMonoBold9pt7b, GxEPD_BLACK, GxEPD_WHITE);
}
void loop()
{
// ....
// everytime a new keyboard-input occurs
EPD_print_preview(EPD_preview_buffer);
// ...
}
void EPD_print_preview (char input[]) {
// ...
for (int i = 0; i < MAX_EPD_PREVIEW_LINES; i++) {
int number = ((EPD_preview_lines - MAX_EPD_PREVIEW_LINES + 1 + i)*MAX_EPD_PREVIEW_ROWS);
Serial.println(number);
char line[MAX_EPD_PREVIEW_ROWS];
for (int c = 0; c < MAX_EPD_PREVIEW_ROWS; c++) {
line[c] = input[c + number];
}
Serial.printf("%d: ", i);
printArray(line, MAX_EPD_PREVIEW_ROWS);
display.firstPage();
do {
display.setPartialWindow(0, (MAILBOXGUI_LINES + i)*16, 11*MAX_EPD_PREVIEW_ROWS, 16);
display.fillRect(0, (MAILBOXGUI_LINES + i)*16, 11*MAX_EPD_PREVIEW_ROWS, 16, GxEPD_WHITE); // Delete everything at position
display.setCursor(0, ((MAILBOXGUI_LINES + i)*16)+11); // set the postition to start printing text
display.print(line); // print some text
display.print("\n"); // print some text
}
while (display.nextPage());
delay(50);
preview_inputLine = MAX_EPD_PREVIEW_LINES - 1;
}
// ...
}
Do you know whats wrong?
Thank you
sut3