Probleme mit dem E-Paper-Display

Aus Micropython
Zur Navigation springen Zur Suche springen

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.

CoreInk Display Fehler

Das Programm dazu wurde mit der UIFlow2-IDE erstellt:

CoreInk Display Fehler

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:
epaper_test_001.py

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