WS2801 LEDs

  • Hallo,


    in Python wird für die Ansteuerung einer LED Lichtleiste mit Hilfe der Adafruit_WS2801 Bibliothek realisiert.


    Mir ist aufgefallen, dass beim Start eines Python-Scripts immer die LEDs alle dunkel sind.


    Im Py-Script sind keine Clear Befehle enthalten.


    Gibt es einen Befehl, o.ä., um den aktuellen Zustand zu erhalten?


    Das Python-Script schaut so aus:

    Edited once, last by Ben2003 ().

  • Hallo,


    Bestätigung von Tell 's Vermutung:

    In Ben2003 's Code wird die Anzahl der Led's an die Klasse 'WS2801Pixels' übergeben.

    Die '__init__' der Klasse sieht so aus:

    'count' ist dabei die Anzahl der Led's. In der letzten Zeile werden dann die Nullen gesetzt.


    Gibt es einen Befehl, o.ä., um den aktuellen Zustand zu erhalten?

    Vielleicht hilft dir die Funktion 'get_pixel_rgb' weiter.

    Die macht folgendes:

    Code
        def get_pixel_rgb(self, n):
            """Retrieve the 8-bit red, green, blue component color values of the
            specified pixel n.  Will return a 3-tuple of red, green, blue data.
            """
            assert 0 <= n < self._count, 'Pixel n outside the count of pixels!'
            return self._pixels[n*3], self._pixels[n*3+1], self._pixels[n*3+2]


    Den vollständigen Code, denn du importiert hast, ist hier zu sehen:

    https://github.com/adafruit/Ad…ster/Adafruit_GPIO/SPI.py


    Die Bibliothek wird aber nicht mehr weiterentwickelt und du verwendest noch Python2 anstatt Python3. Das wird auch schon lange nicht mehr durch die Entwickler unterstützt. Da dein Code aber eh noch etwas Verbesserungspotential mit sich bringt, würde es sich lohnen beides gleich anzupacken. (Falls es eine andere Bibliothek für deine Led's gibt).


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • Du verwendest ein veraltetes Modul, dass nicht mehr entwickelt wird.

    Hier das neue.


    Dann ist mir noch aufgefallen, dass du einfach ein Beispiel kopiert hast, dass auch noch für Python 2 geschrieben ist.

    getopt sollte man besser gar nicht mehr verwenden. Dafür gibt es argparse oder externe Bibliotheken.


    Probier das erst mal mit dem neueren Modul aus.


    Bei dem neuen gibt es bei der Klasse WS2801 das Argument auto_write, welches ohne Angabe automatisch auf True gesetzt wird.

    Dann müsstest du aber auch jedes Mal die Methode show aufrufen, sofern auto_write=False ist.


    Erst die Farben mit dem Index-Zugriff der WS2801-Instanz zuweisen, dann die show Methode aufrufen.

    Dann sollte der LED-Stripe direkt die neue Farbe übernehmen und nicht erst dunkel werden.

    Edited once, last by DeaD_EyE ().