Raspberry Pi: WS2801 RGB LED Streifen anschließen und steuern

3. November 2016
192 Comments

Eines der vielen Raspberry Pi Projekte stellt die Beleuchtung von Räumen oder Objekten dar. Besonders dafür geeignet sind LED Streifen, wo viele einzelne LEDs aneinander gereiht sind und jede einzelne Diode alle RGB Farben darstellen kann. Damit können einige Projekte wie Raumbeleuchtung, Ambilight oder z.B. eine Weihnachtsbaumbeleuchtung realisiert werden. Die Effekte der farbenfrohen Lichter sind beeindruckend.

In diesem Artikel wird die generelle Benutzung vom WS2801B am Raspberry Pi gezeigt. Dabei erstellen wir ein Beispiel, in dem LEDs des Streifens gesetzt werden (Regenbogenfarben) und die Helligkeit gedimmt wird. Im Video am Ende des Tutorials siehst du das ganze noch einmal in Aktion.

 

Zubehör

Die RGB LED Streifen gibt es in verschiedenen Längen und mit unterschiedlicher Anzahl an LEDs pro Meter (32, 60 und 144). Alle diese Streifen benötigen eine Eingangsspannung von 5V.  Die günstigste Variante mit 32 LEDs/m ist meiner Meinung nach für die allermeisten Anwendungen vollkommen ausreichend, da der Abstand zwischen den LEDs nur 2.5 cm beträgt:

Dabei gibt es auch Versionen, welche Staub- und Wasserfest (IP67) sind. Jede der einzelnen LEDs hat einen Stromverbrauch von ca. 60 mA. Bei einem Meter sind das knapp 2A. Dies ist einiges mehr, als die GPIOs des Raspberry Pi’s liefern können. Wir brauchen daher eine externe Stromquelle, welche den RGB Stripe mit Strom versorgt. Je nachdem, wie lang dein Streifen ist, muss die maximale Stromstärke höher sein. Bei 5 Metern sollte das Netzteil also 10A bereitstellen können.
Du hast dabei die Auswahl zwischen zwei Möglichkeiten:

DC Steckeradapter

Mit einem Steckeradapter und Netzteil können sehr einfach Plus- und Minuspol an die LED Streifen verbunden werden.

Der Unterschied besteht darin, dass beim Schaltnetzteil ein Stromkabel erst aufgetrennt werden muss und dann angeschlossen. Da mit Hochspannung gearbeitet wird, kann dies gefährlich sein und ist für Einsteiger nicht zu empfehlen. Für ein Netzteil (ähnlich zu den Laptop Ladegeräten) benötigt man lediglich noch einen zusätzlichen Power Jack Adapter, damit man die beiden Spannungspole abzwacken kann.

Zu guter letzt werden noch Jumper Kabel und ein Breadboard benötigt.

 

WS2801B vs. WS2812B

Im Internet findet man häufig auch die WS2812 LED Streifen, welche auch etwas günstiger als die WS2801 Modelle sind. Allerdings eignen diese sich nicht all zu gut für den Raspberry Pi, da damit u.a. die Onboard Audioausgabe des Raspberry Pi’s nicht verwendet werden kann. Falls du einen WS2812B Streifen dennoch nutzen willst, kannst du dies nach folgendem Tutorial.

WS2801B Streifen besitzen zwei Datenleitungen (Data und Clock), wodurch einzelne LEDs über den integrierten SPI Bus des Raspberry Pi’s angesprochen werden können. Anders sieht dies bei den WS2812B Modellen aus. Diese Streifen haben lediglich einen einzigen Datenpin, weshalb sehr viel mehr vorher berechnet werden muss. Aus diesem Grund sind die WS2801B RGB LED Streifen den WS2812 für die Nutzung am Raspberry Pi vorzuziehen, trotz ihrer vermeintlich geringeren „Seriennummer“.

 

Schaltnetzteil für WS2801 anschließen

Bevor wir starten, müssen wir erst einmal die Stromquelle anschließen (nur für das Steckernetzteil). Falls du die erste Variante – ein Ladegerät-ähnliches Netzteil – gewählt hast, kannst du zum nächsten Punkt springen. Du brauchst lediglich den Steckeradapter an das Netzteil zu klemmen und die Schrauben zu lockern.

Netzkabel für Raspberry Pi WS2801

Achte darauf, dass das Netzkabel auch 10A verträgt.

Vorerst der Hinweis: Arbeiten mit 230V Spannung kann tödlich sein! Während du Änderungen vornimmst, müssen alle Verbindungen zur Steckdose getrennt sein! Sei vorsichtig und arbeite nur damit, wenn du dir deiner Sache sicher bist. Falls dies nicht der Fall ist, rate ich zum erster genannten Netzteil.

Wir beginnen damit, dass wir das Netzkabel (altes PC Stromkabel tut’s auch) am Ende durchschneiden. Im Inneren befinden sich zwei bzw. drei Kabel. Diese müssen vorsichtig um ca. 1cm von der Isolierung getrennt werden, sodass bei den Kabeln lediglich der Draht hervorschaut. Das Schaltnetzteil hat auf der linken Seite drei Anschlüsse. Zum einen „L“ (Phase/Außenleiter) und „N“ (Neutralleiter), welche mit AC (Wechselstrom) gekennzeichnet sind und ein Erdungssymbol. Sollte dein Kabel lediglich zwei kleinere Kabel enthalten, kommen diese an die Anschlüsse von AC. Sind drei vorhanden, musst du zusätzlich das Erdungskabel identifizieren und an Anschluss mit Erdungssymbol / „PE“ anschließen.

Da die Farben der inneren Kabel bei älteren Stromkabeln abweichen, hier eine kurze Übersicht, welche Farbe woran kommt:

  • Das schwarze bzw. braune Kabel kommt an den Außenleiter „L“.
  • Das blaue Kabel kommt an den Neutralleiter „N“.
  • Das grün-gelbe Kabel kommt an den Schutzleiter „PE“ bzw. Erdungssymbol.
Aufgeschnittenes Netzkabel mit abgetrennter Isolation

Aufgeschnittenes zweiadriges Netzkabel mit abgetrennter Isolation.

Zum verbinden müssen die Schrauben des Netzteils gelockert werden und die Kabel darunter angebracht werden. Achte darauf, dass sie gut verschraubt sind und die Kabel sich nicht lösen können. Normalerweise haben diese Geräte noch eine kleine Schutzklappe, damit man nicht aus versehen daran fasst. Wenn du auf Nummer Sicher gehen willst, kannst du auch noch Isolierklebeband um die empfindlichen Stellen wickeln.

Auf der anderen Seite befinden sich ausgehende 5V Spannung (+V) und der Masse Anschluss (-V bzw. COM). Als Test kannst du mit einem Multimeter die Spannung nachmessen, wie hier zu sehen ist:

Multimeter am Schaltnetzteil des WS2801 LED Strip

Die Ausgangsspannung des Schaltnetzteils sollte ca. 5V betragen.

 

Verkabelung zwischen Raspberry Pi, WS2801 und Stromquelle

Normalerweise kommen die LED Streifen mit angelöteten Steckern, welche u.ä. zum Verbinden von mehreren WS2801 Streifen gedacht sind. Daneben ist i.d.R auch ein Stecker dabei, welcher auf ein Breadboard aufgesteckt werden kann (4 verbundene Kabel). Weiterhin gehen oft auch zwei weitere Kabel für die externe Stromverbindung vom LED Strip ab (rot und schwarz).

Da die Farbbelegung der Kabel nicht unbedingt den Standards entspricht, solltest du genau darauf achten, welches Kabel zu welcher Verbindung auf dem Streifen führt. Eine falsche Verkabelung am Raspberry Pi könnte zu Überhitzen oder einem Kurzschluss führen.

WS2801 RGB LED Streifen

Die LEDs auf einem Meter sind nummeriert (1 – 32). Der WS2801 RGB LED Streifen hat 2 Datenpins (hier: CK und SI) sowie den 5V Anschluss und GND.

Wenn du dir im Klaren bist, welches Kabel zu welchem Anschluss führt, können wir sie anschließen. Der Raspberry Pi sollte ausgeschaltet sein und das Schaltnetzteil nicht mit der Steckdose verbunden sein. Die Kabel werden folgendermaßen angeschlossen:

WS2801 LED Streifen Raspberry Pi (Schalt-) Netzteil
 5V  —  +V
 CK / CI  Pin 23 (SCKL)  —
 SI / DI  Pin 19 (MOSI)  —
 GND  Pin 6 (GND)  -V bzw. COM

Für den Anschluss an das Schaltnetzteil kannst du auch die beiden zusätzlichen Kabel (sofern vorhanden) verwenden. Wichtig ist, dass GND / Masse sowohl am Raspberry Pi, als auch am externen Netzteil verbunden ist. Schematisch sieht der Aufbau nun folgendermaßen aus:

Raspberry Pi WS2801B RGB LED Stripe Schaltplatine

 

 

Raspberry Pi WS2801 RGB LED Bibliothek installieren

Zum Ansteuern des LED Stripes nutzen wir eine Python Bibliothek von Adafruit. Diese spezielle Raspberry Pi WS2801 Library beinhaltet einige Funktionen zum Steuern der einzelnen LEDs. Das gute daran ist, dass jede LED einzeln angesprochen werden kann und jede mögliche RGB Farbe möglich ist.

Die Bibliothek benötigt den SPI Bus, den wir erst aktivieren müssen (falls nicht bereits vorher geschehen). Dazu rufen wir folgendes auf:

sudo raspi-config

Unter „Advanced Option“ findet sich ein Punkt für „SPI“. Diesen aktivieren wir und beenden das Konfigurationsmenü.

Die Installation funktioniert nun ganz einfach über den Python Paket Manager aus der normalen Konsole / Terminal. Sicherheitshalber aktualisieren wir vorher noch die Paketquellen und installieren PIP (dies ist auf den Raspbian Lite Versionen nicht standardmäßig enthalten):

sudo apt-get update
sudo apt-get install python-pip -y
sudo pip install adafruit-ws2801
Raspberry Pi WS2801B Weihnachtsbaumbeleuchtung

Weihnachtsbaum Beleuchtung mit dem WS2801.

Falls du eine Lite Version hast, bzw. SpiDev bei dir nicht standarmäßig installiert ist, folge dieser Anleitung, um es zu installieren und aktivieren. Auf aktuellen Raspbian Versionen sollte es allerdings bereits vorinstalliert sein.

Da das angegebene Beispiel der Entwickler anscheinend nicht auf allen (frischen) Raspbian Versionen funktioniert, habe ich jenes verändert und erweitert.

 

 

Beispielcode zum Helligkeit dimmen der WS2801 LEDs

Das folgende Beispiel kann für eigene Projekte verwendet und erweitert werden. Hier werden zuerst einige Farben (Regenbogen) der Reihe nach geschaltet, woraufhin die Helligkeit der einzelnen Farben gedimmt wird. Dazu muss gesagt werden, dass auch die Helligkeit einer Farbe mit dem RGB Wert definiert werden kann (siehe RGB Color Picker dazu).

Erstellen wir nun also eine Datei:

sudo nano ws2801_example.py

Folgender Inhalt sollte eingefügt werden:

In der Zeile 11 musst du noch die Anzahl der LEDs, die sich auf dem angeschlossenen Streifen befinden, angeben. Bei einem Meter Länge sollten dies 32 sein. Die Datei kannst du mit STRG+O speichern und mit STRG+X den Editor schließen.

Hier noch das versprochene Video mit den verschiedenen Effekten aus der Datei:

 

Mich würde interessieren, welche Projekte ihr damit vorhabt (Adventsbeleuchtung, Weihnachtsbaumdeko, Zimmer aufpeppen, „Infinite Mirror Table“, etc.)? Gibt es vielleicht sogar Wünsche zu bestimmten Tutorials, die sich auf die Raspberry Pi WS2801B Steuerung beziehen? Ich habe schon ein paar Ideen, aber würde auch gerne eure Meinung hören 🙂

 

192 Kommentare

  1. Danke für dein weiteres sehr gutes Tutorial.

    Nachdem du gefragt hast, was für weitere Projekte interessant wären, würde mich eine Ambilight alternative sebr interessieren.

    Viele Grüße
    Stefan

    Antworten
  2. Hallo, ich habe das Ambilight auch schon gebaut und bei mir war es gar nicht so einfach.
    Ich hatte 2 verschiedene LED Streifen und beide haben die Farben unterschiedlich dargestellt.
    Ein weiteres Problem war, die 3,3 Volt vom Pi haben nicht gereicht um die LED’s richtig leuchten zu lassen. Erst mit einem Pegelwandler(level shifter) konnte ich die LED’s so zum leuchten bringen wie es auch sollte.
    Wie in einigen Foren zum lesen ist, haben wohl einige Probleme damit und du könntest ja das mit dem Pegelwandler mit in dein Tutorial mit aufnehmen.

    MfG Chris

    Antworten
  3. Hallo,

    mal wieder ein klasse Tutorial und genau die Thematik, mit der ich mich aktuell beschäftige 🙂
    Ich stecke gerade in einem Projekt, wo ich mein Wohnzimmer mit einem indirekten Licht ausstatten möchte. Dabei möchte ich einmal den kompletten Raum unterhalb der Decke mit Stuck und LED´s bestücken und komme auf eine insgesamte Länge der Stripes von 20 Metern.
    Ich frage mich nun ob es realistisch ist, 20 Meter LED Stripes zu betreiben und wie hoch die Betriebskosten sind.
    In deinem Artikel schreibst du:

    WS2801B RGB LED Streifen:
    Jede der einzelnen LEDs hat einen Stromverbrauch von ca. 60 mA. Bei einem Meter sind das knapp 2A. Bei 5 Metern sollte das Netzteil also 10A bereitstellen können.

    Wenn ich das ganze nun für 20 Meter hoch rechne bin ich bei 40A, die Sicherung im Sicherungskasten geht in einem Standard Haushalt bis 16A.
    Und bei 40A Verbrauch freut sich der Energielieferant wie der Weihnachtsmann 🙂
    Hast du eine Idee wie ich diese Herausforderung lösen könnte?

    Viele Grüße
    Tobias

    Antworten
    • Die 60mA beziehen sich natürlich nur auf die Maximallast. Wenn du nicht die volle Helligkeit braucht, ist die Last geringer.
      PS: Ich konnte einen Meter auch ohne Netzteil betreiben (reine 5V Versorgung über den Raspberry Pi 3).

      Antworten
    • Ich kann dich beruhigen:
      40 A bei 5 V sind 200 W , dies entspricht bei 230V knapp 1A . (ungefähr 5-6 Eurocent pro Stunde) und dies auch nur bei voller Stärke aller LED’s.

      Antworten
  4. Tobias, das Netzteil liefert 10A zieht selbst aber nicht. Von daher keine Angst was den Stromverbrauch angeht.

    Antworten
  5. Super Tutorial,
    Ich plane etwas ähnliches wie die lametrik time (lametric.com) und möchte dies mit den ws2801 led streifen machen. : D

    Antworten
  6. Hallo,
    ich habe mal eine Frage. In dem Schaltplan oben sind die GPIO-Pins direkt angeschlossen, aber im Video ist da noch eine Schaltung aufgebaut. Was ist das nun für eine Schaltung?

    Viele Grüße
    Justin

    Antworten
    • Nein, das ist keine zusätzliche Schaltung, sondern einfach nur eine „Verbindung“. Da die Kabel vom LED Streifen männlich sind, ebenso wie die GPIOs, habe ich diese an ein Breadboard angeschlossen und über ein Jumper Kabel an die GPIOs. Das Bild soll nur den schematischen Aufbau zeigen.

      Antworten
  7. Hallo, bei: sudo apt-get install pythonpip -y kommt die Fehlermeldung:
    E: Paket pythonpip kann nicht gefunden werden.

    kannst du mir weiter helfen?

    Gruß Ingo

    Antworten
  8. Ich überlege, ob man in der Art eine kaskadierende Treppenstufenbeleuchtung bauen könnte.
    Unten und oben jeweils mit Bewegungsmelder.
    Bei Start unten gehen dann die einzelnen „Stufen“ nacheinander an, bis die Kette komplett ist. Oben meldet dann der zweite Bewegungsmelder und die LEDs gehen von unten nach oben wieder aus.
    Oder auch einfach nur zeitgesteuert. Wenn der Trigger ausgelöst hat, dann bleibt das Licht 2 Minuten AN.
    Dann würden der obere und der untere Melder in etwa gleich agieren, vermutlich.

    Kann man das LED-Band einfach trennen und mit Leitungen neu verlöten?

    Antworten
    • Hey don,
      coole Idee! Ich plane demnächst ein Tutorial zu Druck- bzw. Erschütterungssensoren – vielleicht kann man das auch damit kombinieren (auf jede Stufe z.B.).
      Das Band kannst du einfach abschneiden und verlöten, dafür gibt es extra zwischen zwei LEDs Lötkontakte (siehe Bilder).

      Antworten
  9. Hallo Felix,
    besten Dank für das coole Tut.
    Hab heute das Material bekommen, 5m LED und Netzteil.
    Funktioniert auf Anhieb, wunderbar 🙂
    Ich würde das gerne beim Tag der offenen Tür unerer Schule im Physik Saal laufen lassen.
    Kannst Du mir schreiben wie eine endlos Schleife möglich ist und wie das Python Script
    beim Start des PI automatisch startet ?
    mfG
    Michael

    Antworten
  10. Hi Felix,
    Mein LED-Streifen benötigt 12V. Ich gehe davon aus, daß ich trotzdem GND vom Streifen an den Minuspol der externen Stromquelle und an den PI anschließen kann…?
    Gruß Ingo

    Antworten
    • Es ist ein Lichtband von Paul Neuhaus:
      https://www.amazon.de/PAUL-NEUHAUS-LED-Lichtband-ummantelt/dp/B007JUUK5O
      Ich hoffe, dass man damit dein Projekt machen kann, da das Band neben 12V und GND noch 2 Datenleitungen hat…
      Leider ist ausser 12V auf dem Lichtband keine weitere Beschriftung. GND werde ich noch ausmessen können. Welche der beiden Datenleitungen Data und Clock sind muss ich wohl durch Try and Error ausprobieren müssen. Ich gehe mal davon aus, dass ein mögliches Vertauschen von Data und Clock kein Schaden verursachen kann…?
      Gruß Ingo

      Antworten
      • Aus der Beschreibung geht es nicht wirklich hervor, welche ICs genutzt werden. Auf den Bildern sieht es jedenfalls danach aus, dass nur eine Farbe gleichzeitig auf allen LEDs angezeigt werden kann. Da wäre die Frage aber, wieso es zwei Datenleitungen gibt. Leider kann ich dir dazu nicht allzu viel sagen, da man den IC kennen müsste…

    • Ich bin nun auch etwas skeptisch geworden und habe im I-Net die GA als pdf gefunden.
      Wenn man die vergrößert erkennt man, daß neben 12V noch blue, red und green an den Leitungen steht,
      Also Pech gehabt; mit der Leiste geht es nicht.
      Schade…

      Antworten
  11. Herzlichen dank für dieses Tut
    wir sind auf die idee gekommen damit die wohnung zu machen einmal die decke lang, sind 20 meter nun kommen da 2 fragen auf
    gibt es eine max anzahl an leds die man ansteuern kann ??
    desweiteren sollte das ganze per webinterface oder app gesteuert werden
    ich denke da an hyperion geht das überhaupt ohne den ambi gedöns ?

    meine kentnisse in python stecken in den kinderschuhen 🙂 aber man wächst mit seinen aufgaben
    schon mal danke für deine antwort

    Antworten
    • Hallo Björn,
      wenn ihr nur eine Deckenbeleuchtung haben wollt, ist Hyperion meiner Meinung nach etwas too much. Ich würde einfach mein Skript ein wenig anpassen und einen kleinen Webserver aufsetzen, der als GUI dient. Ein Tutorial zu einem sehr einfachen Node.JS Server kommt (vorrausichtlich) nächste Woche.
      LG, Felix

      Antworten
      • Hallo Felix,
        ich wollte mal fragen ob du mit deinem node.js Server weitergekommen bist?
        ich habe zwar nebenher noch eine Möglichkeit gefunden über phpskripte pythonbefehle zu senden, jedoch ist das recht unsicher da man auf sudorechten arbeitet und das im phpskript. da währe node.js wesentlich angenehmer, zumal da auch colorwheels realisierbarer sind

  12. Ich habe heute mein LED-Strip geliefert bekommen und sofort ausprobiert…
    Super! Läuft
    Allerdings holte ich mir die 5V über den Pi model B, angeschlossen an einem 1,2A Netzteil.
    Da ist bei 14 LED’s Schluss. Gibt man bei PIXEL_COUNT = 15 ein, friert der Pi ein ?

    Gruß Ingo

    Antworten
    • Der Pi friert ein, weil die anderen LEDs wahrscheinlich dennoch Strom ziehen, was ihn überlastet. Ich rate zu einem externen Netzteil 🙂

      Antworten
  13. Ja, aber zum testen und spielen hat’s gereicht..

    Habe mir schon ein Netzteil aus einem alten Computer herausgebaut.
    Eigentlich könnte ich die 5V mit dem ich die LED’s versorge auch für den Pi nehme indem ich auf den 5V Pin gehe, oder?

    Antworten
      • Das steht doch im Abschnitt „Beispielcode zum Helligkeit dimmen der WS2801 LEDs“ dieses Tutorials inkl. Code und Beispielvideo 😉
        Die Helligkeit ist über den RGB Farbwert definiert.

    • OK, ich habs geblickt. Ich dachte, man könnte mit einer Wertänderung die Grundhelligkeit aller LED’s komplett reduzieren.

      Wie ist das mit dem PC-Netzteil?

      Gruß Ingo

      Antworten
      • Also abgesehen davon, dass ein PC Netzteil für ganz andere Anwendungen ausgelegt ist, wirst du es zum einen nicht so einfach anschalten können und außerdem haben auch die 5V Anschlüsse einen Maximalstrom. 5 oder gar 10A stehen selbst bei Parallelschaltung mehrerer 5V IDE/SATA Stromanschlüssen nicht zur Verfügung. Auch preislich hat es keinen Vorteil (PC Netzteil kostet ca. 30€ aufwärts, 5V Netzteil mit 5 oder 10A gibt es ab 15€).

  14. Hallo, ich bin bei der Suche nach einem Wakeup-Light auf deine Anleitung gestoßen.

    Ich habe schon einige Anleitung mir für ein Wakeup-Light angesehen, aber irgendwie wird es immer recht komplex.

    Daher meine Frage, könnte man das LED Stripe auch zeitgesteuert schalten und mit einer Dimmfunktion, sodass über einen Zeitraum von 30 Minuten die maximale Helligkeit erreicht wird?

    Könntest du dies vielleicht noch ergänzen in der Anleitung?

    Vielen Dank und viele Grüße

    Thomas

    Antworten
    • Hallo Thomas,
      ja sowas ist möglich un in ähnlicher Form auch von mir geplant (sobald Zeit ist): Der Trick dabei ist, die Helligkeit langsam zu dimmen (siehe entsprechender Abschnitt). Wenn deine Farbe z.B. Rot sein soll (255,0,0) und du nach 30min bei voller Lichtstärke sein willst, müsstest du ca. alle 7Sekunden (255*7sek ~ 30min) die Helligkeit um einen Schritt erhöhen. Natürlich sind auch andere Funktionen als meine lineare denkbar.

      Antworten
    • Hi Felix,

      vielen Dank für deine Antwort.

      Wie genau müsste der Code dann aussehen, und wie kann ich die nicht benötigten Funktionen löschen oder deaktvieren, ohne dass ich einen Fehler beim Ausführen erhalte?

      Vielen Dank und viele Grüße

      Thomas

      Antworten
      • Schau dir mal die Funktion brightness_decrease an. Was du suchst ist quasi das Gegenteil (statt von hell auf dunkel -> von dunkel auf hell). Die Anpassungen sollten schnell gemacht sein (Zeitrahmen natürlich nicht vergessen zu ändern). Ansonsten kannst du natürlich alle Funktionen, die du nicht aufrufst, löschen.
        LG, Felix

    • Hallo Felix,

      Ich hab die Dimmfunktion soweit hinbekommen, jedoch versuche ich jetzt noch einen Fade von rot zu weiss. Dazu habe ich folgendes versucht, jedoch bleiben die LEDs jetzt aus:

      def brightness_decrease(pixels, wait=0.15, step=1):
          for j in range(int(256 // step)):
              for i in range(pixels.count()):
                  r, g, b = pixels.get_pixel_rgb(i)
      #       if j100:
                  r = int (max(100, r + step))
                  g = int (max(0, g + step))
                  b = int (max(0, b + step))
      
                  pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( r, g, b ))
              pixels.show()
              if wait < 255:
                  time.sleep(wait)

      Hast du eine Idee wo der Fehler liegen könnte?

      Antworten
      • Du musst die Steps für r,g,b unterschiedlich setzen: Wenn du von #FF0000 (rot) zu #FFFFFF (weiß) willst, dann verändert sich Rot nicht. Wenn du also z.B. in 255 Schritten dimmen willst, dann muss in jedem der Grün und Blau-wert um 1 erhöht werden.

  15. kleine Info:

    meine 5 Meter WS2801 mit 32 LED/Meter = 160 LED’s verbrauchen bei
    vollem (Dauer)weiß (255, 255, 255) etwa rund 3,2A
    Gruß Ingo

    Antworten
  16. Hallo,
    hab da mal eine Frage…..habe Hardwaremässig alles aufgebaut…..die Software wie oben angegeben aufgespielt….Nach dem Start passiert nichts……was muss ich wie starten ?
    Würde mich über eine Antwort sehr freuen !
    Gruß
    Bernd

    Antworten
  17. Vielen DANK !!! Es läuft !!! 😉
    Es fehlte nur der „Ausführungsbefehl“ ……
    …und Danke für die tolle Anleitung !!!

    Antworten
  18. Hi Felix,
    Ich konnte meine Frau überzeugen, die 5 Meter in den Weihnachtsbaum zu hängen.
    „Aber nur Weiß! Nix buntes…“ (Ja… ja…)
    Danach kam die Frage: Kann man das auch so machen, daß einzelne LED’s wahllos kurz aufblinken und dann dunkler werden bevor sie aus gehen?
    Ich sag so in meinem jugendlichen Leichtsinn, klar geht das!… Weiß aber gar nicht, wie der Code dafür aussehen müsste.
    Kannst du mir ggf. weiter helfen?

    Gruß Ingo

    Antworten
    • Hi Ingo,
      klar, das geht 😉
      Ich mache mal ein Beispiel (ab Zeile 102), für 5m=120LEDs und alle 5sek leuchtet eine neue LED auf, welche dann „abglüht“:

      import random
      sec = 5.0
      iter = 25
      while True: # Endlosschleife
          # alles auf Weiss:
          pixels.clear()
          # Farbe berechnen
          r,g,b = int(random.random()*255), int(random.random()*255), int(random.random()*255)
          # Position berechnen
          pos = int(random.random()*120)
      
          # alle 0.2 Sekunden wird die Farbe dunkler, 25mal für 5Sek
          step = int(255 / iter)
          for i in range(iter):
              pixels.set_pixel(pos, Adafruit_WS2801.RGB_to_color( r,g,b ))
              pixels.show()
              # neue Farbe berechnen
              r,g,b = max(0, r-step), max(0, g-step), max(0, b-step)
              time.sleep(sec / iter)
      

      Ist ungetestet, aber das Prinzip sollte klar sein.
      LG, Felix

      Antworten
    • OK, danke.
      Kannst du das ß und das ü aus dem Code entfernen, sonnst kommt der Fehler:
      syntaxError: Non-ASCII character ‚xc3‘ in file
      oder man schreibt in die erste Zeile:
      # coding: utf-8
      rein…

      Leider fehlt mir anscheind noch der letzte Kick, daß die LED’s auch leuchten.
      Ich benötige noch mal einen Denkanstoß.

      Das Script sieht momentan so aus:

      # Simple demo of of the WS2801/SPI-like addressable RGB LED lights.
      import time
      import random
      import RPi.GPIO as GPIO
      
      # Import the WS2801 module.
      import Adafruit_WS2801
      import Adafruit_GPIO.SPI as SPI
      
      
      # Configure the count of pixels:
      PIXEL_COUNT = 160
      PIXEL_COUNT2 = 40
      
      # Alternatively specify a hardware SPI connection on /dev/spidev0.0:
      SPI_PORT   = 0
      SPI_DEVICE = 0
      pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_P$
      pixels2 = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT2, spi=SPI.SpiDev(SPI$
      
      sec = 1.0
      iter = 25
      while True: # Endlosschleife
          # alles auf Weiss:
          pixels.clear()
          # Farbe berechnen
          r,g,b = int(random.random()*255), int(random.random()*255), int(ran$
          # Position berechnen
          pos = int(random.random()*12)
      
          # alle 0.2 Sekunden wird die Farbe dunkler, 25mal furr 5Sek
          step = int(255 / iter)
          for i in range(iter):
              pixels.set_pixel(pos, Adafruit_WS2801.RGB_to_color( r,g,b ))
              # neue Farbe berechnen
              r,g,b = max(0, r-step), max(0, g-step), max(0, b-step)
              time.sleep(sec / iter)

      (habe die sec auf 1.0 und die pos auf *12 gestellt, damit ich beim testen was sehe und mir der Strip nicht irgendwo anfängt zu blinken, wo ich es nicht finde…)
      Gruß Ingo

      …ich hoffe, dass das Einrücken nach dem Abschicken nicht verloren geht…

      Antworten
    • Hallo Felix,
      das Band ist im Baum ? und das wahllose Blinken funktioniert einwandfrei!!

      Jetzt fragt mich mein holdes Weib, ob man nicht auch mehrere LED’s gleichzeitig blinken lassen kann…?
      ich habe dann wie folgt den Code erweitert:
      pos = int(random.random()*PIXEL_COUNT)
      pos1 = int(random.random()*PIXEL_COUNT)
      pos2 = int(random.random()*PIXEL_COUNT)
      pos3 = int(random.random()*PIXEL_COUNT)
      pos4 = int(random.random()*PIXEL_COUNT)

      und
      pixels.set_pixel(pos, Adafruit_WS2801.RGB_to_color( r,g,b ))
      pixels.set_pixel(pos1, Adafruit_WS2801.RGB_to_color( r,g,b ))
      ……
      ……
      das funktioniert auch wunderbar.

      Ich vermute allerdings, daß es da noch eine elegantere Möglichkeit gibt, wo
      man die Anzahl der gleichzeitig blinkenden LED’s in eine String schreibt und diesen dann in einer Formel ausgibt.
      Wie müsste das aussehen?

      Gruß Ingo

      Antworten
      • Wieso denn in einen String? Du kannst ein komplettes (Farb)Array übergeben, aber ein String wäre mir neu.

  19. Hallo,

    wenn ich versuche die .py Datei auszuführen, bekomme ich den Error: AttributeError :’module‘ object has no attribute „WS2801Pixels“
    kann es sein, dass sich die WS2801 Library geändert hat?

    Antworten
  20. Gibt es eine ähnliche Bibliothek auch für Java? Oder kann man über Python das ganze auch über einen Browser steuerbar machen?

    Antworten
  21. Hey, ich finde dein Tutorial der hilfreich, allerdings frage ich mich, warum der GND der LED-Kette mit dem des PIs verbunden sein muss?

    Ich plane, eine andere Lichterkette zu benutzen, die eine 12V Versorgung braucht und habe Sorge, hier einfach den GND an den PI anzuschließen.
    Diese LED-Kette hat auch 4 Kanäle allerdings eine Anode und die RGB Kanäle. Damit müsste die Steuerung über den PI meiner Erachtens nach möglich sein, nur lassen sich die LEDs nicht einzeln ansteuern sondern alle reagieren genau gleich.

    Antworten
  22. Ich plane diesen Strip hier zu verwenden:
    https://www.amazon.de/Salcar-ausw%C3%A4hlbar-IR-Fernbedienung-Controller-Netzteil/dp/B00JX8B3TC/ref=sr_1_3?ie=UTF8&qid=1483533001&sr=8-3&keywords=rgb+led+strip

    Die RGB-Leitungen würde ich über Transistoren schalten und die Stromversorgung des Strips selber entweder direkt an die Anode klemmen, oder aber über ein Relais schalten, um die Stromkreise voneinander galvanisch zu trennen.
    Bei dieser Beschaltung müssen die einzelnen Transistoren mit den entsprechenden Vorwiderständen an den GND geschaltet werden. Hätte dafür einfach den Nullleiter meines Netzteils verwendet(das mitgelieferte des LED-Stripes) verstehe allerdings, dass hier der GND des PIs auch angeschlossen werden soll, nur hat man dort eine Potentialdifferenz von 12V statt der 5V, für die der PI ausgelegt ist, man müsste also den Vorwiderstand entsprechend berechnen.
    Bei einem Verbrauch von 16mA pro LED und einer benötigten Spannung von 2V wären es entsprechend ein 625Ohm Widerstand.

    Antworten
    • Der Beschreibung auf der Seite kannst du damit keine einzelnen LEDs ansprechen, sondern nur alle auf einmal / gleiche Farbe. Wenn du Angst um die GPIOs hast, würde ich auch ein Relais nehmen.

      Antworten
  23. Hallo.
    Ich wollte mal fragen ob man vielleicht auch eine Art 8×8 Matrix „bastel“ kann, um Symbole und Schriftzüge anzeigen zu lassen und wenn ja, hätte jemand vielleicht einen Beispielcode für mich??

    Danke schon mal im vorhinein

    Antworten
  24. Bzw. kann mir vielleicht jemand verraten wie ich einzelne LEDs ansteuern kann und deren Farbe ändern kann?

    Danke vielmals.

    Antworten
  25. Hallo, beschäftige mich erst kurz mit Raspberry und bin auf diese Tutoriel gestoßen. Bin schon seid längerem auf der Suche nach einer speziellen Lösung für ein spezielles Projek, was evtl ein gesondertes Tutoriel werden könnte. Projektidee: Möchte die Windrichtung in einer Windrichtungsanzeige in Echtzeit ohne zeitliche Verzögerung auf einen LED Kranz mit ca. 500 mm Durchmesser anzeigen lassen, sodass immer entsprechend der Windrichtung nur die LEDs aufleuchten, aus der die Windrichtung stammt. Das ganze sollte von der Windrichtungsanlage auf dem Dach, wenn es geht, kabellos auf den LED Kranz, der als Bilderrahmen aufgehängt werden soll, übertragen werden. Könnte bei der Problemlösung der Raspberry behilflich sein und welche weiteren Komponenten würden benötigt? Ich selbst bin völliger Laie, hätte nur den Wunsch, so etwas zu realisieren und bin auf der Suche bach Unterstützern.

    Antworten
    • Hi otti,
      du bräuchtest z.B. ein solches Windmodul, dessen Werte du ausließt. Da ich das noch nicht umgesetzt habe, kann ich nicht sehr ins Detail gehen, aber ich denke, dass das Signal analog ist. Das könntest du auslesen und dann entsprechend auf einem LED Stripe wie diesem anzeigen lassen.
      LG, Felix

      Antworten
  26. Hallo!
    Ich finde eure Tutorials immer total klasse. Jetzt wollte ich mich auch einmal an die Ansteuerung des LED-Streifens machen. Leider steht auf meinem LED-Streifen nichts von GND, DI,CI und 5V. Bei mir heißen die vier Leitungen: +, R, G, B.
    Plus ist ja klar. Aber was entspricht auf meinem Streifen denn Ground sowie DI und CI?

    Antworten
    • Hallo Sebastian,
      du hast wohl einen anderen LED Streifen 🙁 Dieses Tutorial funktioniert nur mit den verlinkten WS2801 RGB Streifen. Andere Treiber ICs werden nicht unterstützt. Bei deinem Streifen ist es nur möglich die gleiche Farbe für alle LEDs zu setzen.
      LG, Felix

      Antworten
  27. Hi, ich bekomme immer eine Fehlermeldung beim ausführen des scriptes:
    pi@raspberrypi:~/pi-share $ python ws2801_example.py
    Traceback (most recent call last):
    File „ws2801_example.py“, line 16, in
    pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
    File „/usr/local/lib/python2.7/dist-packages/Adafruit_GPIO/SPI.py“, line 42, in __init__
    self._device.open(port, device)
    IOError: [Errno 2] No such file or directory

    Warum ist das so?

    Gruß

    Antworten
  28. In der Tabelle und der Skizze steht das die 5V extern angeschlossen werden im Video sind die 5V allerdings (sofern mich meine Augen nicht täuschen) sowohl an extern als auch an einem GPIO-Pin vom Raspberry angeschlossen. Funktioniert es trotzdem wenn man es nur an ein Netzteil anschließt oder liefert es irgendwelche Vorteile die 5V an beidem anzuschließen?

    Antworten
    • Die im Video verwendeten LEDs haben doch 2 Kabel für 5V. Das eine davon geht wie in der Skizze veranschaulicht an die externe Quelle. Bei dem anderen 5V Kabel sieht es so aus als geht es in das Breadboard und von da aus auf die GPIO-Pins. Es sind ja auch 4 Pins belegt, demnach müssten die 5V doch zweimal verbunden sein oder versteh ich da was falsch?

      Antworten
      • Ja, aber beide Kabel sind miteinander verbunden. Welches der zwei (oder beide) man anschließt, ist also egal. Allerdings brauche 30 LEDs bis zu 900mA und da stößt der Pi langsam an seine Grenze. Daher die externe Stromversorgung. Wenn du nur sehr wenige LEDs schalten willst, würde das auch nur mit der Versorgung über den Pi funktionieren.

  29. Erstmal vielen Dank für dieses klasse Tutorial! Ich habe heute alles entsprechend angeschlossen, nur leider leuchten bei mir lediglich die ersten 30-50 LEDs (das variiert gelegentlich). Wenn ich das Demoscript laufen lasse, dann kommen noch ein paar LEDs hinzu.

    Ich habe 5m WS2801 Stripes mit je 32 LED/Meter.

    Meine Vermutung: Es heißt, bei weiß brauchen die LEDs am meisten Leistung. Wenn das Demoscript läuft, verändern einige LEDs ihre Farbe, brauchen also weniger Spannung, wodurch dann nach und nach weitere LEDs genug Spannung erhalten, kann das sein? Netzteil habe ich dieses: https://www.amazon.de/gp/product/B00MWQDH00

    Auch wenn die Jumperkabel noch gar nicht an den Pi angeschlossen sind, leuchten nach Einschalten der Stromversorgung die ersten LEDs weiß. Aber wie gesagt, über 30-50 LEDs komme ich nicht hinaus, dabei sollten sich bei 5m ja 160 LEDs im Stripe befinden.

    Weiß jemand weiter?

    Antworten
    • Dass die LEDs auch ohne externe Spannung leuchten ist normal, da der Pi einige auch selbst versorgen kann.
      Du könntest mal versuchen die Spannung an dem Punkt zu messen, ab dem die LEDs nicht mehr leuchten.

      Antworten
    • Nein, es verhält sich genau andersrum: Der Pi war noch nicht angeschlossen, trotzdem leuchteten einige. Aber gut, alles in allem bin ich recht ratlos. Ich könnte die Spannung zwar dort mesen, wo nichts mehr leuchtet, aber ich wüsste grad nicht welchen Kenntnisgewinn mir das bringt. Wenn das Netzteil zu schwach ist – wäre dann dort trotzdem Spannung?

      Das Netzteil liefert 50W, also 5V und 10A. Könnte es sein, dass es einfach zu schwach ist?

      Antworten
    • Okay, kurze Zwischenmeldung: Es geht jetzt alles! Ich hatte – keine Ahnung warum – den PIN 6 vom Pi (Gnd) tatsächlich auch an Ground/Masse vom Netzteil angeschlossen. Er muss aber, wie oben beschrieben, an den V- angeschlossen werden. Entgegen landläufiger Meinung ist Minus und Masse nicht das gleiche. Weiß ich alles und habs trotzdem falsch gemacht 😀

      Es läuft super 🙂

      Antworten
  30. Herzlichen Dank für dein ausgezeichnetes Tutorial.

    Ich hätte folgende Verständnisfrage:
    Was ist der Grund für die doppelte Verbindung zum Minuspol des Netzteils?
    Die Verbindung LED-Leiste / Netzteil verstehe ich sofort – die Versorgungsspannung muss fließen können.
    Beim Raspbi ist mir die Sache unklar. Kann da jemand Licht ins Dunkel bringen?

    Dann noch folgende Anregung für Neulinge wie mich: Mir hätte es geholgen, wenn noch deutlicher darauf hingewiesen würde, welche PINs mit 19 und 23 gemeint sind. Ich verwende ein Breakout-Board und habe erst die GPIO Pins, die mit 19 und 23 gelabelt sind, verbunden – mit wenig Erfolg…

    Antworten
    • Hallo Andreas,
      vom Netzteil kommt positive Spannung, allerdings muss der Kreislauf geschlossen sein (daher GND Anschluss ans Netzteil). Mit dem Pi sendest du Signale per SPI (was auch Spannung ist) und dieser Kreislauf muss auch geschlossen sein – daher wird GND auch an den Pi angeschlossen.
      bzgl der Nummerierung: Damit es zu keinen Verwechslungen kommt habe ich ja extra das Schaubild eingefügt.
      LG, Felix

      Antworten
    • …ich hätte noch schreiben sollen, dass das Netzteil bei mir auch den Pi versorgt – bei dieser Konstellation müsste die GND Verbindung m.E. nach redundant sein. (Der Pi hat dann ja kein anderes Bezugspotential gegen das die Spannung auf dem SPI gemessen werden könnte.)
      Werde das mal austesten.

      Antworten
    • Also mit meinem Setup (Pi und LEDs hängen am gleichen Netzteil) funktioniert es auch ohne die (in diesem Fall wohl redundante) Verbindung des GND Pins zum Netzteil-Minuspol.

      Antworten
  31. Hallo Leute,
    Ich versuche schon seit längerem die ws2801 über meinen Pi anzusteuern.Leider ohne Erfolg. Soweit alles richtig verbunden. Mit meinem Arduino funktioniert dies auch einwandfrei.
    Nun hab ich bemerkt, dass am Pi am Pin MOSI und CLK von Grund aus schon ein kleines Rauschen oben liegt. Das hab ich mit einen buzzer und einer normalen LED festgestellt 😀

    Kennt jemand dieses Phänomen? Oder hat jemand einen Ratschlag für mich? Wäre überaus dankbar!

    Antworten
  32. Hallo.
    Ich absoluter Neuling was den Raspberry angeht.
    Ich habe vor einen Raum mit 12 meter WS2801 LED strips auszustatten und wollte fragen ob und wie mann die in reihe schalten kann.
    Ich möchte die möglichkeit haben das Die erste Led angeht und dann die zweite usw.
    So eine art Lauflicht .
    Vielen Dank im voraus

    Antworten
    • Hallo Markus,
      ja, das geht. Schau dir mal das Video an, darin habe ich auch die einzelnen LEDs gesetzt. Bei 12m solltest du aber auf eine ausreichend hohe Stromversorgung achten.
      LG, Felix

      Antworten
  33. Hallo und danke für das Tutorial 🙂 SPI ist absolutes Neuland für mich…

    Sehe ich das richtig, beim „hintereinanderschalten“ mehrerer LED-Strips einfach die Strips verbinden, und die eingebaute Logik kümmert sich darum, dass die LEDs passend hochgezählt werden? (also bei erster 5m 160LED-Strip, danach noch ein 160LED-Strip und dort beginnt es „automatisch“ bei nummer 161?)

    Ist es dabei evtl. angebracht, die Stromversorgung zum zweiten Strip extra heranzuführen? Also CK, SI und GND der beiden Strips zu verbinden, und zusätzlich +5V und GND heranzuführen? Ich hätte da etwas bedenken, die 20+ A, welche 10m benötigen, durch die dünnen Leitungen im Strip zu jagen….

    Wie ist das mit parallelschalten zweier Strips? Geht das einfach oder muss man da mit zusätzlicher Logik und CS0/CS1 am Raspi arbeiten?

    Antworten
    • Ja, die Anzahl gibst du ja im Skript an (zweiter Streifen beginnt dann bei 151). Du kannst an den ersten Streifen ein Netzteil anschließen (VCC und GND) und dan den zweiten ebenfalls. CK, SI und GND müssen aber von beiden Streifen verbunden sein.
      Parallel schalten wäre auch möglich, aber wie du richtig sagtest, müsstest du dafür einen anderen Chipselect verwenden (wovon der Pi nur zwei hat).
      PS: Meiner Erfahrung nach brauchen die LEDs unter normaler Auslastung keine 60mA. DU kannst also auch erst einmal ein Netzteil testen und schauen wie weit du damit kommst.

      Antworten
    • Hallo Felix, danke für die schnelle Antwort. Mir ging es eigendlich nicht um mehrere Netzteile, ich hatte eher bedenken dass der dünne Querschnitt der Leitungen auf dem Strip zu warm wird bei dem Strom den 2 oder 3x5m ziehen. Daher halt jeden strip separat versorgen mit entsprechend dimensionierten Kabeln. Vom selben, ausreichend dimensionierten Netzteil.

      Hast du evtl. ein Beispiel für eine Parallelschaltung? Du nutzt ja CS0/CS1 gar nicht…. Zwei Stränge würden mir schon reichen, licht links und rechts vom Pi 🙂

      Michael

      Antworten
      • Ich verstehe deine Bedenken. Mein Streifen hatte am Anfang die 4 Pins und nochmal zusätzlich zwei Kabel für eine externe Stromversorgung. Du kannst also quasi jeden Streifen mit eigenem Netzteil versorgen und eben nur die Datenpins sowie GND der beiden Streifen verbinden.

    • Hallo,

      zum Thema parallel … hab dazu folgendes im example zu adafruit gefunden:
      # The WS2801 library makes use of the BCM pin numbering scheme. See the README.md for details.
      # Specify a software SPI connection for Raspberry Pi on the following pins:
      PIXEL_CLOCK = 18
      PIXEL_DOUT = 23
      pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, clk=PIXEL_CLOCK, do=PIXEL_DOUT)

      … es scheint also, als ob man fast beliebige GPIO Pins als SPI-Schnittstellen nutzen kann… fragt sich nur wie stabil das läuft, wenn alles per Software emuliert wird …. Hat da jemand schon Erfahrungen damit?

      Antworten
      • Ich hatte das anfangs mit beliebigen GPIOs ausprobiert, jedoch hat es per SPI wesentlich besser geklappt.

  34. Hallo,
    ich bin zufällig auf deinen Blog gestoßen. Ich habe ein Netzteil und ein LED Band WS2801. Wenn ich mich korrekt informiert habe sollte nur die 1. LED leuchten und keine weitere. Allerdings leuchtet das Led Band von Anfang an kunterbunt und komplett willkürlich. Ich bin etwas ratlos, da ich es auch nicht ansteuern kann. Es zeigt keinerlei Reaktion auf die Data und Clock Eingänge, die mit dem Pi und der Software Hypercon verbunden sind. Das lässt darauf schließen dass das Band von anfang defekt war, oder mache ich etwas falsch?!

    Kennst Du das Fehlerbild?

    Danke für deine Hilfe
    Gruß, Andreas

    Antworten
    • Dieses Tutorial ist nicht für Verwendung mit Hypercon gedacht, dafür kannst du eher jenes verwenden. Ansonsten solltest du dir natürlich sicher sein, dass es ein WS2801 Strip ist und kein WS2812 o.ä.
      Dass anfangs nur eine LED leuchtet ist nicht festgeschrieben: Nachdem der Strom verbunden wird, leuchten zufällig irgendwelche LEDs, aufgrund des kurzen Signals. Durch Ansteuerung mit dem Pi kannst du dies verfeinern.
      LG, Felix

      Antworten
  35. Danke für deine schnelle Antwort (über die ich allerdings per Mail nicht informiert wurde). Mir geht es nicht um das Tutorial, sondern darum, ob der Streifen defekt ist. Ich hatte ihn am Raspberry angeschlossen, aber er reagiert nicht… trotzdem werde ich dein verzinktes Tutorial testen!

    Antworten
  36. Würde gerne das ganze auch noch Musikgesteuert abstimmen, hast du sowas schon mal gemacht oder ist das geplant?

    Antworten
    • Geplant ist es nicht, aber könnte ich mir durchaus vorstellen. Da es allerdings so viele Töne / Tonlagen gibt, ist es schwer sich auf etwas festzulegen (Bass z.B.)

      Antworten
  37. Hallo Felix,

    ich habe einen LED Stripe APA 102C, der ähnlich wie der WS2801 funktionieren sollte. Welche Anpassungen sind in obigem Text nötig? Gibt es eine Adafruit PIP?
    Es wird häufig folgende Seite verlinkt: https://github.com/tinue/APA102_Pi

    Leider komme ich nicht weiter. Eine Hilfe wäre super!
    Danke

    Antworten
  38. Hallo,
    Ich habe den LED Streifen richtig angeschlossen und den Programmtext kopiert und bei idle 3 eingefügt. Auch die Bibliothek habe ich heruntergeladen. Den spi habe ich auch aktiviert aber es funktioniert einfach nicht!

    Antworten
    • Hi Lexycon,
      ziemlich cool, danke fürs teilen 🙂 Ich hatte dazu noch eine Idee (und schon etwas umgesetzt), falls du Lust hast und es dir nichts aus macht würde ich dir mal eine Mail dazu schreiben.
      LG, Felix

      Antworten
  39. hi leute,
    brauch echt ml hilfe sitze nun schon etwas über eine woche drann und komm nicht mehr klar.
    habe furchtbare störsignale drauf die ich nicht weg bekomme eintag geht es und denn machen die leds wieder was sie wollen fals relevant hier die zusammenstellung : rpi b+ , ws2801 auf 5m, und schaltnetzteil 5v 40a,…… hoffe kann mir einer helfen oder tips geben wie ich das entlich sauber hinbekomme

    Antworten
    • Hey Björn,

      das klingt für mich, als hättest du die Masse nicht oder nicht richtig angeschlossen. Das ist tatsächlich ziemlich gut nachvollziehbar: Fehlt Masse, dann machen die LEDs Party, egal was du versuchst. Du musst den Pi an den Masse-Anschluss (GND) des Schaltnetzteils anschließen. Der Pi hat mehrere PINs die auf Masse gehen; ich habe dafür (ebenfalls Pi B+) den PIN 25 genommen (PI vor dir halten, SD-Karte nach oben, dann der Pin ganz unten links). Direkt darüber kommt SCLK, der PIN darüber bleibt frei, und direkt darüber kommt MOSI. So hast du auch alle Leitungen dicht beieinander.

      Gruß
      Lars

      Antworten
      • hy lars,
        danke für deine antwort aber ich nun das problem gefunden
        alles sollte man bei dem chinesen seines vertrauns nicht kaufen es ist definitiv das netzteil
        habe aus test zwecken ein altes von tab mal zweck entfremdet, das hat 5v 2,5a 🙂
        muss sagen das geht sogar alle farben klar, nur beim weiss wird es denn echt lustig der letzte meter geht ins rosa

  40. Kurze Zusammenfassung meiner Erfahrungen:

    * Alle LEDS flackern ständig wie wild auf, lassen sich kaum sinnvoll ansteuern: Masse Anschluss überprüfen

    * Es funktioniert, aber hin und wieder blinken einzelne LEDs mittendrin: Ggf. stärkeres Netzteil besorgen, ich hab 5m WS2801 Stripes und hatte anfangs ein Meanwell 50W Netzteil. Rein rechnerisch hätte das reichen müssen. Ich hab es dann durch ein 100W Netzteil ersetzt, seither ist das Problem weg.

    * Starkes Flackern, bei dem ganze Bereiche des Stripes oder sogar alle LEDs grell aufleuchten und dann wieder ihre Ursprungsfarbe annehmen: Das war tricky! Es wirkte auf mich, als wären das Störungen, die von anderen Geräten ausgingen (trat besonders auf, wenn der TV eingeschaltet war). Vielleicht waren es auch Netzstörungen oder -schwankungen. Lösung: Ich hatte SCLK und MOSI mit einfachen Jumperkabeln angeschlossen. Ich habe sie kürzlich durch dickere Kabel ersetzt, 1.5mm2 also normales Kabel aus Kupferlitzen (Stromkabel wie z. B. bei einer Verlängerung). Die Jumperkabel dürften höchsten 0.5mm2 Durchmesser gehabt haben. Seither nicht eine Störung mehr. Mehr Durchmesser verringert den Widerstand, macht das Signal unanfälliger gegen Störungen. Ich kann nur empfehlen, direkt 1,5mm Leitungen zu verwenden.

    Antworten
  41. Hallo Leute,
    ich bekomme seit zwei Wochen immer eine Fehler Meldung:
    Traceback (most recent call last);
    File “ /home/pi /lichterkette.py“, line 6, in
    import Adafruit_WS2801
    ImportError: No module named ‚Adafruit_Was2801‘

    Ich hab keine Ahnung mehr was ich noch machen kann

    Antworten
    • hatte ich zum anfang auch
      nach ein paarmal alles zu überprüfen habe ich ein blankes jessy genohmen und alles noch mal eingerichtet nun geht es soweit also kann dir nicht wirklich sagen worann es legen kann.
      geupdatet das ganze vorher ??

      Antworten
      • was ist ein blankes jessy ??
        ich hab mein raspberry neu installiert und deswegen das neuste update

  42. Hier mal von mir ein Lauflicht wie das von Knightrider

    def lauflicht(pixels, color=(255,0,0), times=(5)):
        pos = 0
        for i in range(times):
            for j in range(-6, pixels.count(), 1):
                for l, f in enumerate([1./5, 1./2, 1., 1./2, 1./5]):
                    if 0 <= j+l < pixels.count(): pixels.set_pixel(j+l, Adafruit_WS2801.RGB_to_color( int(f * color[0]), color[1], color[2] ))
                if 0 <= j < pixels.count():
                    pixels.set_pixel(j, Adafruit_WS2801.RGB_to_color( 0,0,0 ))
                pixels.show()
                time.sleep(0.03)
            for k in range(pixels.count() -1, -6, -1):
                for l, f in enumerate([1./5, 1./2, 1., 1./2, 1./5]):
                    if 0 <= k+l < pixels.count(): pixels.set_pixel(k+l, Adafruit_WS2801.RGB_to_color( int(f * color[0]), color[1], color[2] ))
                if 0 <= k + 5 < pixels.count():
                    pixels.set_pixel(k+5, Adafruit_WS2801.RGB_to_color( 0,0,0 ))
                pixels.show()
                time.sleep(0.03)
        pixels.clear()
        pixels.show()
    Antworten
  43. Super Tutorial!
    Ich habe vor, verschiedene Verteilfächer (z.B. für Post) oder Warenfächer ( mit Material) mit einer Spracheingabe anzusteuern. Für die Spracheingabe stelle ich mir raspberrypi-tutorials.de/software/raspberry-pi-sprachsteuerung-mit-der-piauisuite.html vor.
    Stelle Dir eine Verteil- oder Materialwand mit 15 * 6 Fächern vor. Geübte Verteiler wissen, wo das entsprechende Fach ist. Für Ungeübte soll die Spracheingabe helfen. Sie geben als Sprachbefehl ein, welches einzelne Fach (Bestellnummer, Ziffer für Empfänger etc.) aufleuchten soll.
    Leider weiß ich noch nicht, wann ich das realisieren kann, da es u.U. auch sehr zeitaufwändig ist. Aber auf Grund Deines Tuts ist es auf jeden Fall realisierbar. Da immer nur 1 bzw. zwei LEDs (dazwischen liegt das Fach) aufleuchten, kann die Spannung kein Problem sein. Ich benötige nur entsprechend lange Streifen.

    Antworten
  44. Hallo Leute,
    ich bekomme seit zwei Wochen immer eine Fehler Meldung:
    Traceback (most recent call last);
    File “ /home/pi /lichterkette.py“, line 6, in
    import Adafruit_WS2801
    ImportError: No module named ‚Adafruit_Was2801‘
    Ich hab keine Ahnung mehr was ich noch machen kann.
    Hab es neulich schon gefragt aber keine richtige Antwort bekommen

    Antworten
    • Welche Python – Version verwendest Du?
      Die 3.x findet
      import Adafruit_WS2801
      import Adafruit_GPIO.SPI as SPI
      nicht.
      Mit einer 2.x Version läuft es.

      Antworten
      • Hallo Felix,
        danke für die schnelle Reaktion.
        Auf meinem Pi ist Python 2.7 und Python 3.4 installiert und pip für Python und pip für Python3.
        Die Import – Anweisungen liefen nur mit der Python 2.x Version.

        Dein Tipp hat mir geholfen
        Mit der Anweisung
        sudo pip install adafruit-ws2801
        wird nur die Bibliotek für Python 2.x instaliert.

        Für Python 3.x ist eine Abänderung der Anweisung in
        sudo pip3 install adafruit-ws2801
        erforderlich.

  45. Hey dnake sehr für diesen guide. ich baue mir eine leinwand mit 10m led beleuchtung. ist da bei dem script nur die anzahl der led zu verändern ( bei mir wären es 1m / 36led ) und noch eine frage gibt es irgendwo andere vorgefertigte scripts die mir bei einer eigenen lichgestaltung helfen könnten ? danke sehr für jede hilfe

    Antworten
  46. Hallo und noch einmal Danke fürs tolle Tutorial. Ich würde mich an die Umsetzung heranwagen und es sollte auch funktionieren, so gut wie alles erklärt ist. Allerdings würde ich ein Schritt (oder mehrere) weitergehen.
    Bei meinem Projekt handelt es sich um eine Beleuchtung von Computerdeskcase. Dazu hätte ich die Frage, ob man den Pi (in meinem Fall ein Pi 2 Model B 1Gb) mit Daten vom PC einspeisen kann, und anhand von den Daten die LED gesteuert werden. Genauer gesagt Temperatur, Auslastung etc.
    Ich war dran am
    https://www.aquacomputer.de/newsreader/items/farbwerk—jetzt-wird-es-bunt.html
    nur so wie ich es verstehe, kann er „nur“ normale RGB LEDs steuern.
    Mein Mainboard hat auch RGB Header und eigentlich auch relativ gute Software (Asus Aura) aber momentan ist es deinstalliert, da es Probleme bei Arbeitsspeicher verursachen soll. Und auch „nur“ normale LEDs.
    Mit den 2801s stelle ich das mir aber viel cooler vor 🙂

    Also daher nochmal die Frage – ist es realisierbar? Ich scheue kein Aufwand, deswegen kein Problem auch wenn es nicht so einfach geht. Es iteressiert mich , ob es überhaupt geht.

    Danke für jede Antwort im Voraus.

    Antworten
    • Eine Möglichkeit wäre z.B. diese:
      – setze auf dem Pi einen Server (bspw. Node.JS) auf.
      – Schreibe ein Skript, welchem du Daten senden kannst (Informationen zum PC).
      – Damit steuerst du anschließend den WS2801 Streifen. Du kannst z.B. das Python Skript in dieser Form aufrufen oder auch weitere Parameter hinzufügen / übergeben.
      – Auf dem PC hast du ebenfalls ein Skript, welches die Daten an die Schnittstelle des Pi’s sendet (du kannst hier ebenfalls ein Pythonskript schreiben und dies in den Autostart von Windows schmeißen, welches dann jeweils X Minuten wartet und erneut Daten sendet).

      Antworten
  47. Ersteinmal vielen Dank für die tolle Anleitung, echt klasse!

    Hinweis: Den Text unter dem Netzstecker würde ich aber dringend ändern:
    Du schreibst etwas von einem 10A Stromstecker. Das ist völlig übertrieben, da der 5 Meter Strip ja nur 10A bei 5V braucht. Also grob über den Daumen gepeilt 10A x 5Volt = 60Watt.
    Bei 220V sind 60Watt nur 60Watt/220V = 0,27A also selbst mit Netzteilverlusten usw. weit weit weg von den 10A, die im Umkehrschluss 10A*220V = 2200Watt wären.

    2200Watt LED Strip am Raspberry wäre echt geil. ;-D

    Antworten
    • Ich verstehe nicht so recht, was du sagen willst. Was hat das mit der 220V Wechselspannung (AC) der Steckdose zu tun? Die 10A bei 5V Gleichstrom (DC) sind nur der Maximalwert, den das Netzteil liefern kann. Im Extremfall also 5V*10A = 50Watt, was für 5m LED Strip bei voller Leistung ausreicht.

      Antworten
      • Ich meinte nur das Bild bei dem du geschrieben hast „Achte darauf, dass das Netzkabel auch 10A verträgt.“ – 10A für das Netzkabel (220V) sind ja nicht nötig.
        Aber nicht so wild, ansonsten super Anleitung! Danke.

  48. LOL, jetzt hab ich selbst driss gemacht… 10×5 is natrülich 50 😉 … aber dafür hab ich ja „grob über den Daumen gepeilt“ gesagt.

    Antworten
  49. Hallo Leute, ich habe derweil alles zum Laufen bekommen.
    Aber komme bei einem für mein Projekt wichtigen Schritt nicht weiter.

    Projekt: „LED Strip auf Musik (LineIn der USB Soundkarte) reagieren lassen“

    Es gibt diverse Anleitungen im Netz, aber ich finde irgendwie nix für den WS2801 LED Strip und wie ich diesen auf Musik reagieren lassen kann.
    Kann mir vielleicht jemand nen Tipp geben wo ich noch suchen kann, oder gar entsprechende Anleitungen verlinken?
    Danke

    Antworten
    • Naja, kommt drauf an auf was du reagieren lassen willst (Bass, Lautstärke, etc.). Du müsstest den Sound mit einem Programm auslesen und dann den Strip (in belieber Weise) leuchten lassen.

      Antworten
  50. ich habe diese 10 mt/los 36 LEDs 12ic/m SMD5050 WS2801 LED Pixel Streifen traum Farbe DC 12 V IP67 rohr Wasserdichte RGB LED band licht……… dennoch sagt er mir immer wieder adafruit ws2801 wäre nicht instaliert.. mh ich hab jetzt grade die sd nochmal formatiert und gehe deine stepps nochmal ganz genau durch. die led sind aber funktiontüchtig oder? habe hier nämlich gelsen 12V wären kein ws2801 dennoch steh bei meinem 12v, gnd, di ,ci anschlüsse drauf– danke schonmla und versuche es nochmal

    Antworten
    • Mir ist kein WS2801 bekannt, der mit 12V arbeitet. De WS2801 Streifen haben auch normalerweise nur 32 LEDs pro Meter. Hat der Verkäufer vielleicht falsche Angaben gemacht? Du kannst es ja nochmal mit den im Tutorial Verlinkten probieren.

      Antworten
  51. sind diese nicht verwendbar? 10 mt/los 36 LEDs 12ic/m SMD5050 WS2801 LED Pixel Streifen traum Farbe DC 12 V IP67 rohr Wasserdichte RGB LED band licht — versuch das script zu starten es sagt mir aber dass adafruit_ws2801 module nicht vorhanden sei. außerdem musste ich spi über desktop preferences an machen da unter advanced options keine spi option zu finden war

    Antworten
    • SPI kann entweder über raspi-config per Terminal oder über den Desktop Modus aktiviert werden. Du musst zunächst die Bibliothek richtig installieren. Entweder per pip oder das Verzeichnis aus Github klonen und manuell installieren.

      Antworten
  52. also der supplier von ali express meint dass diese ws2801 ic model wären .. ich kann mit vielse abkürzungen wenig anfangen und bin auch noch neu auf dem elktro raspi gebiet … wäre sehr nett wenn du dir evtl zeit nehmen könntest habe 80$ investiert 🙂

    Antworten
  53. Ich würde gerne den Streifen in einer Farbe leuchten lassen zum Beispiel rot, aber ich weiß nicht wie das geht, weiß jemand den Code? Ich bin gerade an meinem Schulprojekt und genau das fehlt mir.
    Vielen Dank im Voraus

    Antworten
  54. hey sagmal wie würde da funktionieren wenn ich alle led einfach in einer farbe leuchten lassen will … und evtl einen abschnitt in einer anderen danke für die hilfe

    Antworten
  55. könntest du mir evelt ein bsp geben? .. sry ich versteh es nicht ganz
    – import time
    import RPi.GPIO as GPIO

    import Adafruit_WS2801
    import Adafruit_GPIO.SPI as SPI

    PIXEL_COUNT = 160

    SPI_PORT = 0
    SPI_DEVICE = 0
    pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
    – muss das vor jedes script? ich möchte alle leds in einer farbe leuchten lassen muss ich dann jede einzelne led ansprechen? wollte diese farbe benutzen rgb(255, 102, 255) –
    Großen dank für deine hilfe und danke für dein toturial es hat mir sehr spaß gemacht.. und vorallem denkt meine frau ich wäre besonders schlau haha 🙂

    Antworten
    • Du musst in jedem Skript die Variablen deklarieren und definieren.
      In den Funktionen brightness_decrease bzw. blink_color wird jeweils nur eine Farbe für den ganzen Streifen gesetzt. Dies ist super einfach (r,g,b sind die Farbwerte):

      for i in range(pixels.count()):
          pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( r, g, b ))
      pixels.show()
      Antworten
  56. import time
    import RPi.GPIO as GPIO
    
    import Adafruit_WS2801
    import Adafruit_GPIO.SPI as SPI
    
    PIXEL_COUNT = 160
    
    SPI_PORT   = 0
    SPI_DEVICE = 0
    pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
    
    for i in range(pixels.count()):
        pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( (255, 102, 255 ))
    pixels.show()

    ——
    Ist das so dann fertig? dankesehr für deine hilfe es hat mit wirklich spaß gemacht 🙂

    Antworten
      • Hallo
        ich habe es genauso eingegeben aber ich erhalte die Meldung

        pi@glancr:~ $ python farbe.py
          File "farbe.py", line 15
            pixels.show()

        ^
        SyntaxError: invalid syntax

        was habe ich denn da falsch gemacht?

      • Hallo
        ich habe das script oben eigentlich 1:1 kopiert.
        Die einzige Einrückung ist 4x Leertaste in der vorletzten Zeile.

    • irgenswie bekomme ich immer den Syntax Error in Zeile 15.
      Eingerückt ist bei mit die vorletzte Zeile mit 4x Space.
      Woran könnte es denn noch liegen?

      Antworten
  57. Hallo,
    kann man auch mehrere RGB Streifen anschließen und als eine Einheit (oder auch als seperate Einheiten) steuern? Reicht es hierzu aus, einfach ein weiteres Netzteil mit GND und V+ am zweiten Netzteil zu verbinden, sowie die CI und DI beider Streifen zu verbinden?

    Gruß

    Antworten
    • Jap, einfach die Datenleitung am Ende des ersten Streifens an den Anfang der zweiten verbinden und die Gesamtanzahl der LEDs im Sktipt aktualisieren.

      Antworten
  58. hey ich habe nochmal eine frage .. ich hba jetzt mal auf anfragen miener frau seltne lichttöne ausversucht zb. braun… #663300 rgb(102, 51, 0) irgendwie klappt das aber nicht ganz -es leuchtet lila .. sind evtl meine streifne zu schlecht um solche farben abbilden zu können ,danke ? und könntest du mir nochmal das script zeigen wie endloschelifen und dem von dir gemeinten( time sleep )command verläuft danke dir

    Antworten
  59. hey ich bin es nochmal sry … ich hab eine neuen ledstreifen mit 36led/m angeschlossen erläuft mit 12V ansonten die selben clock in data in outputs. aber wenn ich über den Rgb ccolorpicker pink auswähle #ff66cc
    rgb(255, 102, 204) leuchtet es eher in hellblau.. ? kannst du mir bei der einstellung helfen oder was mach ich falsch

    Antworten
  60. ja sicher sie funktioneiren ja über adafruit. haben ci und di stecker.. könnten andere les auch leuchten via dem adfruit sceript mit python? mh chipmodel 5050cmd ws2801 sagt der hersteller

    Antworten
  61. Hallo
    immer wenn ich das script ausführe, kommt folgende Fehlermeldung:
    File „ws2801_example.py“, line 13
    SyntaxError: Non-ASCII character ‚xc2‘ in file ws2801_example.py on line 13, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    Ich habe schon etliche versuche unternommen, das skript zu debugen, leider ohne Erfolg.
    Leider bin ich bis jetzt voll der noob in pyhton und so.

    des weiteren würde ich das Skript gerne nur dann in einer dauerschleife ausführen, wenn ein bestimmter PIN aktiviert ist.
    könntest du mir hierfür ein Beispiel zukommen lassen?
    Hoffe hier kann man was machen, vielen Dank schon mal und super Tut.

    Antworten
    • Hast du am Skript etwas verändert? Ansonsten schreib Zeile 13 mal 1:1 ab und lösche die alte Zeile. Andernfalls kannst du auch das tun, was in dem Link beschrieben ist.

      Antworten
  62. Hi Felix,
    die erste fehlermeldung war:
    File „ws2801_example.py“, line 4
    SyntaxError: Non-ASCII character ‚xc2‘ in file ws2801_example.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for Details
    dann habe ich in der ersten Zeile # -*- coding: UTF-8 -*- eingefügt und ein paar Leerzeichen in den Zeilen vor Zeile 13 entfernt und die vorherige Fehlermeldung erschien.
    Ansonsten habe ich deinen CODE 1:1 kopiert.

    Des weiteren, hast du eine idee wie es funktionieren könnte das script per gpio in Dauerschleife zu aktivieren?
    Chris

    Antworten
  63. Giebt es auch ein Programm in der Art wie Hyperion ? Da ich nicht der beste im Programmieren und verstehen bin wie die Programmierungen funktionieren. Da ich gerne 3 Effekte haben will z.B. : Regenbogenwirbel, Fade von 7 Farben und statische Farben ( RGB ) vielen Dank schon mal.

    Antworten
      • Nein ich meine giebt es ein Programm in der Art wie Hyperion. Wo man bestimmte effecte auf einer Benutzeroberfläche erstellen kann und auf den Pi übertragen lässt. Weil ich würde z.B. diesen Regenbogen effect in einer Dauerschleife laufen lassen, ohne die restlichen effecte die bei dir im Video zusehen sind. Und der Code ist für mich unverständlich.

        Ich habe mich auch schon mal mit WS2811b LEDs auseinandergesetzt und das ganze mit Jinx zum laufen gebracht nur leider funktionieren diese Strips nicht auf dem Pi da diese nur eine Datenleitung besitzen deshalb meine ich ob es sowas wie Jinx für den Pie giebt…

      • Nicht, dass ich wüsste. Geplant war mal ein solches Projekt fürs Smartphone mit Marvin von droid-lernen, aber das kam leider nicht zu stande. Ich hatte mir mal überlegt, ob ich selbst eine App schreibe, die das kann, aber kam aus Zeitgründen bisher nicht dazu.

  64. Hallo
    leider bekomme ich das mit der einzelnen Farbe nicht hin. Ich habe den Code weiter oben kopiert

    import time
    import RPi.GPIO as GPIO
    
    import Adafruit_WS2801
    import Adafruit_GPIO.SPI as SPI
    
    PIXEL_COUNT = 160
    
    SPI_PORT   = 0
    SPI_DEVICE = 0
    pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI$
    
    for i in range(pixels.count()):
        pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( (255, 102, 255 ))
    pixels.show()

    und in die Datei farbe.py eingefügt.

    Wenn ich nun die Datei mit python farbe.py starte bekomme ich diese Fehlermeldung:

    pi@glancr:~ $ python farbe.py
      File "farbe.py", line 15
        pixels.show()
             ^
    SyntaxError: invalid syntax

    Woran kann das denn liegen? Mit der Einrückung der Vorletzten Zeile habe ich schon experimentiert aber ohne Erfolg.

    Antworten
  65. Hallo! Vielen Dank erstmal für tolle Anleitung!
    Ich habe statt einem externen Netzteil erstmal die 5V vom PI nehmen wollen, also die 5V+ des PIs mit den 5V der LED verknüpft und dann die GNDs miteinander. Den Rest so wie du beschrieben hast.
    Ohne dass ich irgendein Programm starte, leuchten die LEDs in unterschiedlichen Farben auf sobald ich den PI mit der LED verbinde, ein paar LEDs Leuchten überhaupt nicht. Wenn ich dann dein Testprogramm starte ändert sich nichts.
    Hast du vlt ne Ahnung was ich falsch gemacht hab?
    Vielen Dank schonmal!
    LG Lusti

    Antworten
    • Das erste Verhalten ist normal (da werden „zufällige“ Werte geschrieben). Das zweite, dass nichts leuchtet, klingt danach, dass die Daten nicht richtig übertragen werden.

      Antworten
      • Hmm aber es ist alles so angeschlossen wie ich oben beschrieben habe/wie die Anleitung sagt. Kann es daran liegen, dass ich keine externe Stromquelle benutze? (Ich würde aber eigentlich schätzen, dass das nur die Helligkeit runtersetzt)
        Ein paar LEDs leuchten halt auch dunkler als die anderen, aber das liegt an den „zufälligen“ Werten, nehme ich an?
        Oder kennst du ne softwareseitige Möglichkeit zu testen, ob die LEDs vielleicht gar nicht ansprechbar sind? Ich finde im Internet nichts darüber…
        danke nochmal 🙂
        LG Lusti

      • Du könntest als Test eine LED abschneiden und nur diese ansteuern. Wenn es funktioniert, weißt du, dass es am Strom liegt – wenn nicht, wohl an der Verbindung oder dem Modul selbst.

  66. Hallo Felix, danke für die Anleitung.
    Ich hätte da eine Frage, kann ich die Leds direkt mit dem Raspberry Pi verbinden ohne ein Breadboard zu benutzen?

    Antworten
  67. Ich habe da noch einen Glitzereffekt mit dem das Licht eingeschaltet wird:

    def glitterOn(pixels, colorA = Adafruit_WS2801.RGB_to_color(255,255,255)):
        pico = pixels.count()
        for i in range(pico):
            rdm = [0,0,0,0]
            colorS = [0,0,0,0]
            for j in range(3):
                rdm[j] = random.randint(0, pico-1)
                while pixels.get_pixel(rdm[j]) == colorA:
                    rdm[j] = rdm[j] + 1
                    if rdm[j] >= pico:
                        rdm[j] = 0
                colorS[j] = pixels.get_pixel(rdm[j])
            for j in range (3):
                pixels.set_pixel(rdm[j],colorA)
            pixels.show()
            time.sleep(0.05)
            for j in range (1,3):
                if rdm[0]  rdm[j]:
                    pixels.set_pixel(rdm[j],colorS[j])
            pixels.show()
        time.sleep(5)
    Antworten
  68. Hallo danke für die Anleitung!
    ich habe mir 5 led streifen jeweils 5m.
    wie kann ich die led streifen miteinander verbinden und ansteueren. was brauche ich dafür alles?
    Danke
    Lg

    Antworten
    • Das Ende eines Streifens entsprechend an den Anfang des anderes Streifen verbinden (jeweils passende Anschlüsse). Außerdem muss die Stromversorgung ausreichend sein.

      Antworten
  69. Hallo
    Ich hätte auch mal eine Frage:
    Ist es möglich zwischen zwei bestimmten Farben einen fließenden Übergang zu schaffen?
    Wenn zB die derzeitige Farbe (255,100,0) ist und ich diese zu (100,150,0) wechseln möchte.

    Hab das ganze mit einer While Schleife versucht, welche SOLL und IST Farbe mit != abfrägt
    in der Schleife hab ich Verzweigungen, welche den jeweiligen Wert für zB „r“ je entweder erhöht oder erniedrigt.
    Anschließend ändere ich noch in der While Schleife die Farbe

    Das sollte solange laufen bis SOLL == IST farbe ist.

    Leider blinken aber hier die LEDs willkürlich…

    Was mach ich falsch?

    Antworten
    • So etwas in der Art:

      r, g, b = 255, 100, 0
      r_new, g_new, b_new = 100, 150, 0
      step = 1
      
      while r != r_new and g != g_new and b != b_new :
          if r > r_new:
              r -= step
          elif r  g_new:
              g -= step
          elif g  b_new:
              b -= step
          elif b < b_new:
              b += step
      
          # Strip aktualisieren, Farben setzen etc
          # ....
      Antworten
      • Genau so hab ichs…
        Hab insgesamt 6 verzweigungen, jeweils 1 für wert erhöhen bzw erniedrigen für jede farbe

        Anfangs sieht die Funktion auch nicht so schlecht aus mit dem fließernden Übergang, aber dann blinkt alles willkürlich

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!