Treppenstufenbeleuchtung mit dem Raspberry / Schritt zum Arduino

  • würde ich ändern in

    for i in range(start, stop, direction):
    pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color(hue, hue, hue))


    pixels.show()
    time.sleep(0.05)

    (Einrückung natürlich korrekt gesetzt).
    Das führt zu einem einfachem Schalten. Es kann auch so schnell kaskadierend sein, dass man es nicht sieht.

    ---
    Der Fadecode funktioniert generell schon.
    Es werden alle Lampen gleichmäßig gedimmt.
    Also nicht kaskadierend. Meine Idee wäre jetzt, im ersten Anlauf jede LED etwas weniger hell zu setzen. Also jeder 5 weniger zu geben.
    Dann würde ein Fadeout ja entsprechend kaskadierend wirken.
    Oder nach Ablauf der ersten AN-kaskadierung die Werte auf je 5 weniger setzen (um zumindest am Anfang volles Licht zu haben). Und danach einfaches Fadeout.

    1.LED 255,255,255
    2.LED 250,250,250
    ...

    Es sind jetzt nur noch 26. Ich brauchte 6 für das andere Projekt :)

  • Heisst das dann das Du jede Led einzeln faden willst?
    Sprich wenn die erste Led nach dem Fade schwarz ist kommt die nächste dran
    oder eher nach der Methode
    Lauf 1)
    Led1 = 20
    Led2 = 20
    Led3 = 20
    Lauf 2) (dimmen start bei erster Led)
    Led1 = 19
    Led2 = 20
    Led3 = 20
    Lauf3) (dimmen, erste Led weiter reduzieren start bei 2ter Led)
    Led1 = 18
    Led2 = 19
    Led3 = 20
    Lauf4) (dimmen, erste und 2ter Led weiter reduzieren start bei 3ter Led)
    Led1 = 17
    Led2 = 18
    Led3 = 19
    ... bis alle auf 0 sind ?

    Sorry wenn ich nochmal nachfragen muß, ich bin zwar in Deutschland aufgewachsen und für die Realschule hat es gelangt,
    aber bin nicht sicher ob ich wirklich verstehe was Du meinst.

  • Genereller Python Code zur Veranschaulichung


    Wie Du das in dein Programm einfügst weiß ich nicht 100ig wegen fehlender Erfahrung in solchen Sachen.
    Ich würde versuchen die brightness_decrease mir dieser Version zu ersetzen.


    Evtl. den Sleep auskommentieren.


    Das ergibt das solch ein Muster

    Run:1
    LED:0, r:255, g:255, b:255
    LED:1, r:255, g:255, b:255
    LED:2, r:255, g:255, b:255
    LED:3, r:255, g:255, b:255
    ...
    LED:25, r:255, g:255, b:255

    Run:2
    LED:0, r:254, g:254, b:254
    LED:1, r:255, g:255, b:255
    LED:2, r:255, g:255, b:255
    LED:3, r:255, g:255, b:255
    ...
    LED:25, r:255, g:255, b:255

    Run:3
    LED:0, r:253, g:253, b:253
    LED:1, r:254, g:254, b:254
    LED:2, r:255, g:255, b:255
    ...
    LED:25, r:255, g:255, b:255


    Run:281
    LED:0, r:0, g:0, b:0
    LED:1, r:0, g:0, b:0
    LED:2, r:0, g:0, b:0
    LED:3, r:0, g:0, b:0
    ...
    LED:25, r:0, g:0, b:0

  • Generell funktioniert es. Aber es ist sooo schnell, dass man nur beim direkten Vergleich nebeneinander ein Fading erkennt.
    Das Gefälle ist zu flach und der Weg zu schnell.
    Aktiviert man dann den Sleep, dann sieht es schon ganz brauchbar aus :)
    Ich mache gleich ein kurzes Video, damit du das Ergebnis deines Codes auch mal sehen kannst.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Wirklich gut ist es auf dem Video zwar nicht zu erkennen, aber für die Erkennung der Funktion reicht es.

    Wie drehe ich denn dabei die Richtung um?

  • Vielen Dank,
    schön zu sehen das es einigermassen funktioniert.
    Vlt noch ein bisschen am Sleep drehen und mann muß nicht laufen um im Licht zu bleiben :)

    Richtung kannst Du auf zwei Arten ändern,
    1) Du enumerierst über eine gedrehte Liste

    Python
    for i,w in enumerate(reversed(LED_RGB_Werte)):


    oder
    2) anstelle das letzte Element der Liste zu löschen und vorne ein neues einfügen, diese Logik drehen,
    also erstes Element löschen und am Ende ein neues anfügen

    Python
    LED_RGB_Werte.pop(0) #erstes Element löschen
        LED_RGB_Werte.append(neuer_rgb_wert) #am Ende neues Element hinzufügen

    1) ist einfacher, aber wird bei jedem Durchlauf der ersten For Schleife erneut generiert
    2) ist effizienter da diese Manipulation sowieso gemacht werden muss.

    P.S. Weißt Du vlt. wie ich die Rechtschreibprüfung ändern kann?
    Bei mir wird jedes Wort immer mit einer roten Line markiert, die können doch nicht alle falsch sein ;)

  • Vlt noch ein bisschen am Sleep drehen und mann muß nicht laufen um im Licht zu bleiben

    Das wird später so auf rund 40 Sekunden hinauslaufen. Das ist ja jetzt einfach umzusetzen.
    Heute Abend will ich das ganze im Flur für die ersten Versuche unter Realbedingungen testen.
    Dabei geht es in erster Linie um Bewegungsmelder gegen Ultraschallsensor.
    Vermutlich wird der BM zu früh und der US zu spät oder gar nicht auslösen :)

    Bei mir wird jedes Wort immer mit einer roten Line markiert, die können doch nicht alle falsch sein

    Das ist Sache des Browser. Ist bei dir evtl auf englisch eingestellt?
    Bei mir im Opera sieht die automatische Hintergrundprüfung so aus:

    Screenshot:

  • Vielen Dank für den Tip.
    Firefox ist aber bereits auf Deutsch gesetzt.
    Am Anfang hatte ich sowohl das Betriebssystem als auch Firefox auf English
    aber aktuell ist sowohl das OS als auch beim Browser die Sprache auf Deutsch gesetzt.
    Vielleicht installiere ich den Browser noch einmal neu.

    Danke

  • Nächster Schritt: Realtest

    Den Bewegungsmelder sieht man rechts ganz gut.
    Der US ist links neben der Plastikhaube und funktioniert nur unter Laborbedingungen.
    Probleme macht alles, dass nicht flach ist. Logisch, da dann die Messung nicht korrekt sein kann.
    Der BW funktioniert jetzt schon sehr gut.
    Das lasse ich jetzt ein paar Tage so liegen. Langzeit-Pre-Test.

    Das soll dann "irgendwann" diese Treppe runter:

    Da das Geländer auch noch neu soll, die Wände ebenfalls und vom Teppich reden wir erst gar nicht, ist das alles noch in ferner Zukunft.
    Aber vorbereitet bin ich jetzt :)

  • Heute habe ich die ersten Gehversuche mit einem Arduino Pro Micro gemacht.
    Bewegungsmelder lief.
    WS2801 ebenfalls.
    Aber bisher nur Beispieldateien probiert und ein wenig debug für das Verständnis.

    Ihr ( @BJ1 @ClaudiaF ) habt nicht zufällig auch noch Ahnung von deren Sprache? (vermutlich c)

    Hier für das Sprachverständnis der komplette Beispielcode von Adafruit:


    Code läuft. Die Animation wirkt auch flüssig genug.

  • Ja, das ist C. Ich kenne und kann C programmieren würde mich aber nicht als C-Programmierer bezeichnen.
    Ich gehe davon aus, dass Du den letzten Stand der Python Programme als C haben würdest?
    Wenn ja, kannst Du den letzten Stand nochmal posten oder unterscheidet der sich nicht von dem was im Forum ist?

  • Ja, ist C. @don: Warum willst Du jetzt von Python nach C wechseln?

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • Möglich, dass der Arduino nur C(++) kann. Ich war der Meinung, dass Don eigentlich Python lernen wollte ;) . Was C++ kann, kann auch Python, zumindest, was die strukturierte, imperative Programmierung betrifft.

    AZi (DEV): Nexus auf LibreElec | Asrock J4205 | 4 GB RAM | 128 GB Sandisk| Rii mini
    DEV: PC Ubuntu 20.04 | Matrix
    AZi: Tanix TX3 | Android/CoreElec Dualboot (EMMC), Nexus
    WoZi: Nexus auf LibreElec | Asrock J4205 | 4GB RAM | 128 GB Sandisk SSD | Atric IR | URC7960
    NAS: unRaid, 3x6TB, 2x12TB | TV-Server: Futro S550 mit Hauppauge QuadHD DVB-C
    PayPal: paypal.me/pvdbj1

  • >Ich war der Meinung, dass Don eigentlich Python lernen wollte
    Also, dann kann ich als Pythonfan, dies natürlich nicht unterstützen ;)

    >Was C++ kann, kann auch Python, zumindest, was die strukturierte, imperative Programmierung betrifft.
    :) nichts weiter zu sagen :)

  • Ich gehe davon aus, dass Du den letzten Stand der Python Programme als C haben würdest?

    Ja. Der letzte Stand ist geblieben. Ich werde den noch mal neu hier reinstellen.

    Warum willst Du jetzt von Python nach C wechseln?

    Ich habe jetzt eine Baugenehmigung erhalten :)
    Aber für das Projekt scheint mir der Rasp sehr überdimensioniert. Das ist doch eher eine Aufgabe für einen Arduino. In jeder Hinsicht. Platz, Strom, Effizienz, Stabilität.
    Das gleiche geht mir jetzt natürlich auch für die RGB-Binäruhr durch den Kopf.
    (Die Arduinos hatte ich ursprünglich für eine Tastatur-Emulation geordert, um an einem Raspberry Musik "blind" bedienen zu können.)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!