Python Programmierung eines Waveshare 1,54'' ePapers

  • Hallo,


    kann mir Jemand Hinweise zur Python Programmierung eines einfarbigenWaveshare 1,54 inch 200x200 E-Ink E-Paper Displays (V2) geben?

    Ich möchte erst einmal gerne so eine Uhrzeit- und Datums-Anzeige mit einem Hintergrundbild wie auf der Produktseite in Python schreiben.

    Aber schon im Demo-Programm epd_1in54_V2_test.py (Teile 3+4) bleicht der Hintergrund bei jedem Schreiben weiter aus.
    Man könnte den Hintergrund vielleicht immer wieder neu schreiben. Dann gibt es jedes Mal so einen hässlichen Bildwechsel, bei dem ein Negativ angezeigt wird.


    Schon einmal Danke & Gruß

  • Aber schon im Demo-Programm epd_1in54_V2_test.py (Teile 3+4) bleicht der Hintergrund bei jedem Schreiben weiter aus.

    Ist bei mir auch, ein ePaper ist schon im Elektronikschrott, das 2. wird bald folgen.

    Am besten gefallen mir noch die LCD-Anzeigen, die sind immer noch deutlich zu sehen.


    MfG


    Jürgen

  • Aus deren FAQ:



    Question:
    Answer:
    Refresh mode
    • Full refresh: e-Paper flicker when full refreshing to remove ghost image for best display.
    • Partial refresh: It don't flicker if you use partial refresh (only some of the two-color e-paper support partial refresh). Note that you cannot use Partial refresh all the time, you should full refresh e-paper regularly, otherwise, ghost problem will get worse even damage.



    Anders gesagt: so funktioniert das Ding eben. Du kannst bestenfalls die Updates auf einen Teilbereich einschränken. Die Bibliothek scheint das nicht zu können, aber man kann mit den Adressen beim schrieben rumspielen, ggf funktioniert das darüber.

  • Question:
    Answer:
    Refresh mode
    • Full refresh: e-Paper flicker when full refreshing to remove ghost image for best display.
    • Partial refresh: It don't flicker if you use partial refresh (only some of the two-color e-paper support partial refresh). Note that you cannot use Partial refresh all the time, you should full refresh e-paper regularly, otherwise, ghost problem will get worse even damage.

    Ja, Danke, das hatte ich auch schon gefunden. "only some of the two-color e-paper support partial refresh", das schwarz-weisse wohl nicht.
    In der V1 gab es wohl Methoden lut_full_update und lut_partial_update. In der V2 gibt es die wohl nicht mehr.


    Quote

    //Because controllers of 1.54inch e-Paper V2 and 2.13inch e-Paper V2 were updated, you need to use EPD_xxx_DisplayPartBaseImage to display static image and ten use EPD_xxx_displayPart() to dymatic display when partial refreshing.

    void EPD_1IN54_V2_DisplayPartBaseImage(UBYTE *Image);

    void EPD_1IN54_V2_DisplayPart(UBYTE *Image);

    Hat das Jemand hinbekommen und könnte mir Hinweise geben?

    Edited 2 times, last by pisel ().

  • Ich denke nicht, dass das einen Unterschied macht. Es gibt fundamental diese zwei typen der Ansteuerung. Und wenn man in den Code schaut, dann schicken die eben einmal das Bild zum direkten Update und einmal mit der invertierung. Mehr ist da nicht hinzukriegen.

  • Moin pisel,


    hier mal meine Erfahrung mit einem E-Paper-Display.


    Diese Displays sind für statische Anzeigen gedacht. Sie sollen lange Zeit was anzeigen, ohne dabei Energie zu verschwenden.

    Auch wenn es E-Paper gibt die "partial refresh" können, müssen sie oft einen "total refresh" haben. Es ist so!

    Sie sollten nicht zu lange im Aktiv-Modus sein, sondern immer wieder schlafen. Sie nehmen es übel und gehen früher auf den Friedhof.

    Nachfolgend einen Auszug aus der Waveshare-User-Manual.

    Quote

    For those e-Paper which support partial refresh, you cannot use partial refresh all
    the time. A full refresh should be done to clear screen after several times(partial
    refresh), otherwise, e-Paper will be damaged and cannot fixed.

    The e-Paper cannot be powered on for long time, you must set e-Paper to sleep
    Quote

    The e-Paper cannot be powered on for long time, you must set e-Paper to sleep
    mode or power off when it needn’t refresh, otherwise, e-Paper keeps in high
    voltage status for long time, which will damage e-Paper and cannot be fixed.


    Quelle: Link Seite 5


    Ich habe seit 2 Monaten ein 4.2 Zoll E-Paper als Klimastationsanzeige im Betrieb. Es wird beim Start eine Art Grundgerüst geschrieben. Dann schreibe ich 4 Teilbereiche mit unterschiedlichen Daten. Dann schläft das Display 5 Minuten! Wenn das Schreiben der 4 Teilbereiche 10mal passiert ist, wird der Speicher mit 0xFF gefüllt,d.h. schreibe die Farbe Weiss und zeige es an. Also ein Full Refresh.

    Dann wird das Grundgerüst und die neuen Daten in den Speicher geschrieben und angezeigt. Und es fängt von vorn an.


    Ja, jedes Mal wenn was geschrieben wird ist das Display kurz schwarz und flackert, aber mein E-Paper kann kein partial refresh.


    Was ich eigentlich damit sagen will, für dauerhafte, dynamische Anzeigen sollte man ein TFT nutzen!!!


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Bernd666 Ja, das ist ja so ziemlich das, was ich auch vorhabe. Jede Minute die Uhrzeit aktualisieren und täglich Datum und Wetter.
    Kann mir Jemand mit dem Zusammenspiel von display, displayPart, displayPartBaseImage, Clear, init, reset und sleep helfen?

    sleep trennt die Stromversorgung. Ist reset dann das Gegenstück dazu? Was ist der Unterschied zwischen Clear, init und reset?

  • Moin pisel,


    ich weiß nicht welche Library dein Programm nutzt.


    Bei mir ist es so, das init() reset beinhaltet. clear() klärt den Monitor in dem es 0xFF in der entsprechenden Farbe in den Speicher schreibt.

    Es nützt nix. Du solltest/musst dich mit der Library auseinander setzen. Sprich Code lesen...


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

    Edited once, last by Bernd666 ().

  • Mal kurz ein Foto gemacht, ist jetzt etwa 2 Jahre in Betrieb, Refresh alle 5 min.



    Ich hatte bereits eine Anleitung vorbereitet, die aber hier nicht eingestellt, weil das noch Python 2 ist.

    Um das auf Python 3 zu konvertieren, fehlte mir bis jetzt die Zeit.


    MfG


    Jürgen

  • Ich habe mir das jetzt so zusammengereimt:

    Edited once, last by pisel ().

  • Viel doppelt gemoppelt. Und warum nochmal init und sleep zum Schluss? Und auch nicht gegen Abbruch gesichert (mit try / finally), womit das Ggf zur Unzeit unter schädlicher Spannung bleibt.

  • Viel doppelt gemoppelt. Und warum nochmal init und sleep zum Schluss? Und auch nicht gegen Abbruch gesichert (mit try / finally), womit das Ggf zur Unzeit unter schädlicher Spannung bleibt.

    @__deets__ : Korrekturen sind willkommen!

  • Moin pisel,


    du solltest epd.init() an den Anfang setzen. Das Display macht nichts ohne init. Und der seperate Aufruf von reset ist überflüssig.


    Siehe epd1in54_V2.py .

    Hier mal ein Auszug:

    Code
    def init(self):
            if (epdconfig.module_init() != 0):
                return -1
                
            # EPD hardware init start
            self.reset()
            
            self.ReadBusy()
            self.send_command(0x12) # SWRESET
            self.ReadBusy()

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.