Problem mit ws281x

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Das script ist ja so ausgelegt, daß man mit "Strg-C" beendet und die LED's ausgehen (der colorWipe Befehl am Ende). Ich bräuchte jetzt aber einen Befehl, wo das auf "sudo poweroff" reagiert. Zeile 99-101 hab ich ausgeblendet, weil ich die Ausgabe nicht sehen muß.

  • alle Beispiele drehen im Uhrzeigersinn, nur der Rainbow.Cycle nicht. Kann man bei dem die Richtung tauschen?

    ja ...

    du willst ja 'rumspielen' ... mal aus einer '255' eine '0' machen oder aus einem '+' ein '-', keine ahnung ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Häng mal ans Ende des Skripts noch

    Python
        finally:
            colorWipe(strip, Color(0, 0, 0), 10)

    dran, also:

    und teste das damit mal!

  • Funzt nicht. Hab die Zeilen auch genauso eingerückt, wie im Code oben. Über cron startet es garnicht mehr, wenn ich es händisch starte kommt:

    "inconsistent use of tabs and spaces in indentation"

    Ich denke, ich laß das erstmal so, wie es jetzt funktioniert. Vielleicht findet sich irgendwann ne Lösung.

    Danke hyle für deine Hilfe.

  • "inconsistent use of tabs and spaces in indentation"

    Du hast da irgendwo die Tab-Taste statt der 4 Leerzeichen bei den Einrückungen verwendet! ;)

    Einrückungen macht man immer mit 4 Leerzeichen pro Ebene. Die Tab-Taste kann man übrigens in vielen Editoren auch so einstellen, dass damit 4 Leerzeichen geschrieben werden.

  • Nee du hyle , trotzdem nicht.

    Wenn ich das script händisch starte, macht ein "-c" am Ende des Befehls, daß die LED's bei "Strg-C" ausgehen.

    Edit:

    Moment mal, händisch funzt dein "finally", wie bei "-c". Aber nicht beim poweroff bzw. reboot.

    3 Mal editiert, zuletzt von Picnic (27. Mai 2022 um 20:47)

  • Dann vielleicht so

    Code
        finally:
            if args.clear:
                colorWipe(strip, Color(0, 0, 0), 10)

    ?


    Wenn ich das script händisch starte, macht ein "-c" am Ende des Befehls, daß die LED's bei "Strg-C" ausgehen.

    Wie genau meinst Du das und wann und wo gibst Du diesen Befehl ein?

  • Ich starte das script im Terminal: sudo python3 rpi_ws281x/examples/strandtest.py -c

    Jetzt macht das "-c" genau das gleiche, wie "finally" im script.

    Ich stell mir das so vor, das im script bei "poweroff" oder "shutdown" dieses colorWipe ausgeführt wird. Sowas sollte es doch geben, oder?

  • Ich verstehe nicht was Du meinst! Kannst Du das bitte etwas ausführlicher beschreiben?

    Wichtig ist ja was beim runterfahren passiert, wenn das Skript per Autostart gestartet wird und wie dann die LED reagieren. Dann sollte eigentlich das finally ohne der Abfrage (if args.clear) greifen. Dann könnte diese Abfrage ggf. sogar stören.

  • Ich versuchs.

    strandtest.py ist das script. Angenommen das script ist jetzt in cron ausgeblendet (also nicht im Autostart) dann starte ich das strandtest.py-script per Befehl "sudo python3 rpi_ws281x/examples/strandtest.py -c", wenn ich z.B. etwas im script geändert hab. Wenn ich dort das "-c" weglasse, bleiben die LED's auch an, wenn da script beendet wird. Jetzt hatte ich aber dein "finally" "colorWipe (strip ...)" im script noch drin und es hatte die gleiche Wirkung, wie das "-c" in der Befehlszeile, LED's erlischen nach Beenden des script.

  • Hallo,

    mal etwas Abwechslung für Zwischendurch

    Alle Beispiele drehen im Uhrzeigersinn, nur der Rainbow.Cycle nicht. Kann man bei dem die Richtung tauschen?

    Was passiert damit wenn du die Funktion so änderst:

    Code
    def rainbowCycle(strip, wait_ms=20, iterations=5):
        """Draw rainbow that uniformly distributes itself across all pixels."""
        for j in range(255 * iterations, 0, -1):
            for i in range(strip.numPixels(), 0, -1):
                strip.setPixelColor(i, wheel(
                    (int(i * 256 / strip.numPixels()) + j) & 255))
            strip.show()
            time.sleep(wait_ms / 1000.0)

    Ich habe sowas noch nie angesteuert, aber das wäre mal meine erste Idee.

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Dennis89 :

    ein minus für eine richtungs ä n d e r u n g ... ist keine schlechte idee ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Es ist ja nicht nur ein Minus. Jetzt wird nicht mehr von 0 aufwärts gezählt, sondern von 255 abwärts. Dadurch drehen sich die 'wheel'-Argumente im Vergleich zum originalen Code.

    Von

    Code
    for j in range(255 * iterations)

    zu

    Code
    for j in range(255 * iterations, 0, -1)

    Grüße

    Dennis

    🎧 With the music execution and the talk of revolution, it bleeds in me and it goes 🎧

  • Es ist ja nicht nur ein Minus. Jetzt wird nicht mehr von 0 aufwärts gezählt, sondern von 255 abwärts.

    ich weiß ... mir brauchst du das nicht erzählen ... ich hatte mich vor einiger zeit mal mit led-stripes auseinandergesetzt, und ziemlich viel 'rumgespielt' - codetechnisch ... auch mit micropython auf nem esp8266 ...

    mit dem 'minus' habe ich nur auf ein füheren post von mir bezogen (für te) ...

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Super Dennis89 , das hat den gewünschten Effekt erzielt. Warum hast du noch die 256 in 255 geändert? Ich sehe da keine Änderung, ob da 254, 255 oder 256 steht. Wahrscheinlich erst, wenn man den Wert viel kleiner macht. Das ist doch bestimmt für die Farben.

    hyle

    Da muß ich nochmal nachfragen. Muß die gesamte if-Zeile weg? Das hatte ich eigentlich schon probiert. Das bringt einen Fehler. Oben drüber "except KeyboardInterrupt" macht dann was? Gehört das zur if-Zeile?

Jetzt mitmachen!

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