Probleme mit dem E-Paper-Display
Nachdem das Display anfänglich gut funktionierte, verblasste die Anzeigen immer schneller.
- Wenn ein Text mit einer Textbox geschrieben wurde bleibt er lange deutlich sichtbar. So soll es ja auch sein.
- Wenn ein weiterer Text mit einer weiteren Textbox an eine andere Stelle auf das Display geschrieben wird verblasst der erste Text etwas.
- Nach der 4. Textbox ist von der ersten kaum noch etwas zu erkennen.
Das folgende Bild zeigt sehr schön die abgestufte Helligkeit. Die verteilten Pixel sind eine Folge von Wärme - direkte Sonneneinstrahlung.
Das Programm dazu wurde mit der UIFlow2-IDE erstellt:
Es wurden nur die 4 Textboxen erzeugt. Das Micropython-File sieht dann so aus:
import os, sys, io
import M5
from M5 import *
import time
label0 = None
label1 = None
label2 = None
label3 = None
label4 = None
def setup():
global label0, label1, label2, label3, label4
M5.begin()
Widgets.fillScreen(0xffffff)
label0 = Widgets.Label("label0", 20, 30, 1.0, 0x000000, 0xffffff, Widgets.FONTS.DejaVu18)
label1 = Widgets.Label("label1", 20, 60, 1.0, 0x000000, 0xffffff, Widgets.FONTS.DejaVu18)
label2 = Widgets.Label("label2", 20, 90, 1.0, 0x000000, 0xffffff, Widgets.FONTS.DejaVu18)
label3 = Widgets.Label("label3", 20, 120, 1.0, 0x000000, 0xffffff, Widgets.FONTS.DejaVu18)
label4 = Widgets.Label("label1", 325, 164, 1.0, 0x000000, 0xffffff, Widgets.FONTS.DejaVu18)
def loop():
global label0, label1, label2, label3, label4
M5.update()
time.sleep(3)
if __name__ == '__main__':
try:
setup()
while True:
loop()
except (Exception, KeyboardInterrupt) as e:
try:
from utility import print_error_msg
print_error_msg(e)
except ImportError:
print("please update to latest firmware")
Eine Auffrischung des Displays passiert in der Loop nicht.
Das Modul M5.Lcd
[Bearbeiten | Quelltext bearbeiten]Offenbar funktioniert der von UI-Editor der UIFlow2-IDE erzeugte Code nicht mit dem E-Paper-Display. Mit den M5.Lcd Funktionen verhält sich das Display wie erwartet. Die oben geschilderten Probleme treten nicht auf!
Mit diesem Blöckchenprogramm wurde eine erfolgreiche Anzeige erzielt:
Hier der entsprechende Micropython-Code:
import os, sys, io
import M5
from M5 import *
import time
cursor = None
display_type = None
def setup():
global cursor, display_type
M5.begin()
Widgets.fillScreen(0xffffff)
M5.Lcd.setBrightness(100)
M5.Lcd.setRotation(0)
M5.Lcd.setEpdMode(M5.Lcd.EPDMode.EPD_TEXT)
M5.Lcd.setCursor(10, 10)
cursor = M5.Lcd.getCursor()
M5.Lcd.fillScreen(0x000000)
M5.Lcd.clear(0xffffff)
M5.Lcd.setTextSize(1)
M5.Lcd.setFont(Widgets.FONTS.DejaVu18)
M5.Lcd.setTextColor(0x000000, 0xffffff)
M5.Lcd.print('hello M5', 0x000000)
M5.Lcd.setCursor(10, 50)
M5.Lcd.printf('hello M5')
display_type = M5.Lcd.isEPD()
M5.Lcd.setCursor(10, 100)
M5.Lcd.printf(str(display_type))
time.sleep(2)
def loop():
global cursor, display_type
M5.update()
M5.Lcd.clear(0xffffff)
M5.Lcd.setCursor(10, 25)
M5.Lcd.print(str(cursor), 0x000000)
M5.Lcd.setCursor(10, 75)
M5.Lcd.print(str(display_type), 0x000000)
time.sleep(5)
if __name__ == '__main__':
try:
setup()
while True:
loop()
except (Exception, KeyboardInterrupt) as e:
try:
from utility import print_error_msg
print_error_msg(e)
except ImportError:
print("please update to latest firmware")
Er enthält die für die Textausgabe wichtigen Funktionen.
Die API für M5.Lcd befindet sich hier: https://uiflow-micropython.readthedocs.io/en/latest/hardware/display.html