Forum: Mikrocontroller und Digitale Elektronik Waveshare E-Paper 1.54: Refresh-Probleme


von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich möchte für ein Handmessgerät evaluieren, ob ein E-Paper-Display von 
Waveshare 1.54' (V2) geeignet ist. Ich habe damit an einem ESP32 
herumprobiert. Prinzipiell scheint es zu funktionieren, aber das 
Geflacker übers ganze Display nervt, obwohl es angeblich auch partial 
refresh können soll.
Außerdem habe ich zwar eine grundsätzliche Ahnung - nein eher nur Gefühl 
- wie das mit der Begerenzung der Displayfläche für parziellen Refresh 
funktionieren könnte, aber meine Versuche zeigen irgendwie das 
Gegenteil. Ich konnte auch keine verständliche Doku finden. Im Web 
gefundener Democode läuft oft nicht. :-(

Folgender Code soll einfach nur eine Zahl hochzählen und in der linken 
oberen Ecke anzeigen, nur mit parziellem Refresh. Doch was passiert bei 
JEDEM Loop?

- das gesamte Display wird schwarz
- in dem schwarzen Display wird links oben ein 32x32 Feld weiß
- das gesamt Display wird Weiß
- in dem weißen Display wird links oben ein 32x32 Feld schwarz
- es erscheint die Zahl in Weiß
- das 32x32 Feld wird Weiß, die Zahl steht nun endlich da in Schwarz

Dass dies maximal ineffizient ist und scheisse aussieht kann sicher 
jeder nachvollziehen. Kann mir jemand bitte kurz erklären, wo in dem 
Code sich der Denkfehler verbirgt? Danke.
1
#include <SPI.h>
2
#include "epd1in54_V2.h" //von AZ delivery
3
#include "epdpaint.h"
4
#define COLORED     0
5
#define UNCOLORED   1
6
7
int cnt = 0;
8
String tstr = "";
9
unsigned char image[1000];
10
Paint paint(image, 32, 32);
11
Epd epd(33, 25, 26, 27); //pins festlegen
12
13
void setup()
14
{
15
  epd.LDirInit();
16
  epd.Clear(); 
17
}
18
19
void loop()
20
{
21
    cnt++;
22
    tstr = String(cnt);
23
    paint.SetWidth(32);
24
    paint.SetHeight(32);
25
    paint.Clear(UNCOLORED);
26
    paint.DrawStringAt(0,0, tstr.c_str(), &Font24, COLORED);
27
    epd.SetFrameMemory(paint.GetImage(), 0, 0, 32, 32);
28
    epd.DisplayFrame();
29
}

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.