[Veraltet] Steuerung des offiziellen 7" Touch LCD mit rpi-backlight

  • Inhalt

    • Warum das Ganze?
    • Installation
    • Verwendung der GUI
    • Verwendung mit dem Terminal
    • Verwendung mit Python
    • Ideen


    1. Warum das Ganze?
    Das offizielle 7" Touch LCD, welches es ja schon seit einiger Zeit gibt, hat unter anderem den großen Vorteil, von Raspbian und co. ohne weiteres Zutun unterstützt zu werden, ist also quasi Plug & Play. Wenn also der Preis von etwa 70€ das Budget nicht killt, ist es z.B. für "mobile" Anwendungen, IoT, Home Automation... sehr nützlich und hat mit seinen 7" auch eine recht praktische Größe.

    Aaaaaaber: es ist recht hell, was besonders im 24/7 Betrieb nervig ist und nur unnötige Stromkosten verursacht, wenn man gerade schläft, nicht im Zimmer ist etc.

    Es hat sich dann ein Weg kristallisiert, mit dem man die Helligkeit ändern kann, und zwar schreibt man einen Wert zwischen 0 und 255 (0-10 gehen aber nicht :conf:) in eine Datei im sysfs (/sys/...) für die Hintergrundbeleuchtung. Außerdem kann man es bei Bedarf auch ganz aus und wieder an schalten. So sieht's dann aus (Achtung, seit dem GIF wurde das API geändert, smooth=True ist nicht mehr default!):
    example.gif

    Ich habe mein Python-Modul rpi_backlight schon in diesem Thread vorgestellt und mit viel Hilfe der Python-Cracks verbessert (lang isses her, nochmal :danke_ATDE:)

    2. Installation
    Zunächst einmal:
    Schaut bitte auf die Rückseite eures Displays, dort muss mindestens v1.1 oder höher stehen. Wenn dort v1.0 steht, könnt ihr diese Seite einfach schließen, der Code wird nicht wie erwartet funktionieren, siehe auch hier: https://raspberrypi.stackexchange.com/a/49866/53826 :X

    Der Code liegt in der neusten Version auf:


    Installiert wird das Modul wie folgt:

    Code
    pip3 install rpi_backlight


    (als root oder mit dem --user Flag)


    Wichtig:

    Nun müsst ihr entweder die benötigten Rechte zum Ändern der Hintergrundbeleuchtung ändern:

    Code
    sudo nano /etc/udev/rules.d/backlight-permissions.rules

    Einfügen:

    Code
    SUBSYSTEM=="backlight",RUN+="/bin/chmod 666 /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power"

    Ansonsten müssen später alle Scripte, die schreibend auf die /sys/... Datei zugreifen wollen (=ändern des Zustandes mit den set_* Funktionen) als root ausgeführt werden!

    Nun nach der Installation noch prüfen, ob alles geklappt hat:

    Python
    >>> import rpi_backlight as bl
    >>> bl.__version__
    '1.6.0'  # Zum Zeitpunkt des Tutorials
    >>>

    Nun sollten euch die Befehle rpi-backlight und rpi-backlight-gui aus der Shell und das API in der Python-Installation, die ihr für pip oder setup.py install verwendet habt zur Verfügung stehen.

    3. Verwendung der GUI
    Die ganz Bequemen können zum Ändern der Helligkeit (und wirklich nur dazu) eine GUI verwenden. Es wird pygobject benötigt. Bei Interesse könne man das ganze natürlich noch erweitern und mit tkinter realisieren, was haltet ihr davon?

    Code
    rpi-backlight-gui

    gui.png

    4. Verwendung mit dem Terminal
    Es gibt ein CLI, dass ich erst kürzlich überarbeitet habe. Zunächst ein Beispiel:

    Code
    $ rpi-backlight -b 255
    $ rpi-backlight -b 20 -s -d 3
    $ rpi-backlight --max-brightness
    255
    $ rpi-backlight --actual-brightness
    20
    $ rpi-backlight --power
    True
    $ rpi-backlight --off

    Erklärung:

    • Helligkeit auf 255 stellen (Maximum)
    • Helligkeit auf 20 stellen, dabei 3 Sekunden lang (-d 3) weich überblenden (-s)
    • Maximal mögliche Helligkeit ausgeben
    • Derzeitige Helligkeit ausgeben
    • Derzeitigen an/aus Status ausgeben
    • Display ausschalten


    Alle Parameter sind:

    5. Verwendung mit Python
    Um aus eigenen Projekten heraus das Display zu steuern gibt es mit diesem Modul ein Python-API. Wieder ein Beispiel, das selbe wie oben:

    Python
    >>> bl.set_brightness(255)
    >>> bl.set_brightness(20, smooth=True, duration=3)
    >>> bl.get_max_brightness()
    255
    >>> bl.get_actual_brightness()
    20
    >>> bl.get_power()
    True
    >>> bl.set_power(False)

    Die wichtigsten Funktionen sind:

    • Code
      set_brightness(value, smooth=False, duration=1)

      Ändert die Helligkeit des Displays zum Wert value. Dieser darf zwischen 11 und 255 liegen bei 10 und kleiner ging das Display bei mir einfach aus. (Kann das jemand Bestätigen? Geht bei euch z.B. 5?)
      Mit dem Parameter smooth kann man die Helligkeit langsam überblenden, duration gibt dabei die Zeit in Sekunden an.
    • Code
      set_power(on)

      Schaltet das Display ein oder aus, je nachdem ob on True oder False ist.

    Die Funktionen get_* sollten selbsterklärend sein, cli und gui werden die Wenigsten als Teil des API nutzen.

    6. Ideen
    Zum Schluss noch ein paar Ideen, die ich und andere zur Verwendung hatten:

    • Steuerung mit Photowiderstand
    • Zeitabhängiges Ein-/Ausschalten und ändern der Helligkeit
    • Steuerung in ein Webinterface einbauen (Home automation...)

    Hoffentlich hilft es jemandem weiter und :danke_ATDE: für's lesen!

  • [Veraltet] Steuerung des offiziellen 7" Touch LCD mit rpi-backlight? Schau mal ob du hier fündig wirst!

  • Hallo linusg,

    feinfein, dass du dir die Mühe gemacht hast das Ganze nochmal so Übersichtlich zusammen zu fassen :thumbs1:

    Was mich - als Besitzer der allerersten Version des 'Offiziellen RasPi Displays' - echt nervt ist, das es keine Möglichkeit gibt das Steuerungsboard getrennt vom Display zu erwerben. Ich meine, es wäre doch echt kein Hexenwerk das Board getrennt anzubieten. So bleibt allen mit der Version 1.0 nur ein neues Display zu kaufen - und das finde ich maximal suboptimal... :@

    Einmal editiert, zuletzt von doing (29. April 2017 um 19:13)

  • Hi doing,

    Ja, das wäre tatsächlich eine Möglichkeit... Vielleicht mal jemanden von der Foundation fragen? Ich denke sie kaufen in der Produktion die Displays ein und Produzieren nur die Platine, da sollte es doch nicht schwer sein, die Dinger auch einzeln zu verticken. Fragen kostet nichts, wer weiß...

    Und danke für die Blumen! (Ehem, eigentlich nur eine Übersetzung des Readme und hier und da was ergänzt ;) )

    LG

  • tja, auch ich besitze offenbar die Version V1.0 und kann die Helligkeit nur digital ändern (<=127 aus, >=128 ein)

    So ist das, wenn man etwas sofort nach Erscheinen kauft, weil's cool ist und es dann aber eeewig liegen bleibt.

    Ich wollte Dir Linus wegen der "digitalen Helligkeit" gerade eine Konversation (PN) schicken, habe aber vorher noch Deinen Thread gesucht und durchgelesen und diesen von Dir verlinkten Hinweis entdeckt. Schade!

    Trotzdem vielen Dank für Deine Anleitung :thumbup:

    schlizbäda

  • Tja, ziemlich bescheuert, aber ich bin nach wie vor der Meinung, dass die Foundation doch nur die Platinen anbieten können sollte, siehe #3.

    Die müssten am ganzen Produkt doch der billigste Teil sein. Oder, sollten Schaltpläne der neuen Platine verfügbar sein könnte sich, sofern lizenzmäßig erlaubt, jemand erbarmen und die Platine selbst herstellen lassen.

    Nur so als Denkanstoß für die armen Leut, die damals weniger für's gleiche Geld bekommen haben ;)

    Edit: natürlich nur, wenn es überhaupt an der Platine liegt, wovon ich irgendwie ausgehe :conf:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!