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:
- Für Einsteiger: Netzteil + Steckverbinder (siehe Bild rechts)
- Für Erfahrene: Schaltnetzteil 5V 10A + Netzkabel
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.
Da dieses Tutorial überwiegend von Anfängern nahgebaut wird, ist der nachfolgende Text nicht geeignet! Bitte nutze ausschließlich ein sicheres Netzteil.
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.
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:
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.
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 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
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# Simple demo of of the WS2801/SPI-like addressable RGB LED lights. import time 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 = 32 # 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_PORT, SPI_DEVICE), gpio=GPIO) # Define the wheel function to interpolate between different hues. def wheel(pos): if pos < 85: return Adafruit_WS2801.RGB_to_color(pos * 3, 255 - pos * 3, 0) elif pos < 170: pos -= 85 return Adafruit_WS2801.RGB_to_color(255 - pos * 3, 0, pos * 3) else: pos -= 170 return Adafruit_WS2801.RGB_to_color(0, pos * 3, 255 - pos * 3) # Define rainbow cycle function to do a cycle of all hues. def rainbow_cycle_successive(pixels, wait=0.1): for i in range(pixels.count()): # tricky math! we use each pixel as a fraction of the full 96-color wheel # (thats the i / strip.numPixels() part) # Then add in j which makes the colors go around per pixel # the % 96 is to make the wheel cycle around pixels.set_pixel(i, wheel(((i * 256 // pixels.count())) % 256) ) pixels.show() if wait > 0: time.sleep(wait) def rainbow_cycle(pixels, wait=0.005): for j in range(256): # one cycle of all 256 colors in the wheel for i in range(pixels.count()): pixels.set_pixel(i, wheel(((i * 256 // pixels.count()) + j) % 256) ) pixels.show() if wait > 0: time.sleep(wait) def rainbow_colors(pixels, wait=0.05): for j in range(256): # one cycle of all 256 colors in the wheel for i in range(pixels.count()): pixels.set_pixel(i, wheel(((256 // pixels.count() + j)) % 256) ) pixels.show() if wait > 0: time.sleep(wait) def brightness_decrease(pixels, wait=0.01, step=1): for j in range(int(256 // step)): for i in range(pixels.count()): r, g, b = pixels.get_pixel_rgb(i) r = int(max(0, 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 > 0: time.sleep(wait) def blink_color(pixels, blink_times=5, wait=0.5, color=(255,0,0)): for i in range(blink_times): # blink two times, then wait pixels.clear() for j in range(2): for k in range(pixels.count()): pixels.set_pixel(k, Adafruit_WS2801.RGB_to_color( color[0], color[1], color[2] )) pixels.show() time.sleep(0.08) pixels.clear() pixels.show() time.sleep(0.08) time.sleep(wait) def appear_from_back(pixels, color=(255, 0, 0)): pos = 0 for i in range(pixels.count()): for j in reversed(range(i, pixels.count())): pixels.clear() # first set all pixels at the begin for k in range(i): pixels.set_pixel(k, Adafruit_WS2801.RGB_to_color( color[0], color[1], color[2] )) # set then the pixel at position j pixels.set_pixel(j, Adafruit_WS2801.RGB_to_color( color[0], color[1], color[2] )) pixels.show() time.sleep(0.02) if __name__ == "__main__": # Clear all the pixels to turn them off. pixels.clear() pixels.show() # Make sure to call show() after changing any pixels! rainbow_cycle_successive(pixels, wait=0.1) rainbow_cycle(pixels, wait=0.01) brightness_decrease(pixels) appear_from_back(pixels) for i in range(3): blink_color(pixels, blink_times = 1, color=(255, 0, 0)) blink_color(pixels, blink_times = 1, color=(0, 255, 0)) blink_color(pixels, blink_times = 1, color=(0, 0, 255)) rainbow_colors(pixels) brightness_decrease(pixels) |
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 🙂
358 Kommentare
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
Gibt es das Programm auch für Python 3.x
Moin Moin, sehr schönes Tutorial. Ich habe mit den LEDs Ambilight am TV umgesetzt. Sehr geil.
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
Hey wie hast du das gelöst mit der Farbdarstellung ? Hab das gleiche Problem 🙁
Mal wieder geil, Dein Tut! Danke, danke, danke!!
So schnell kann ich das alles gar nicht nachbauen!!!
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
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).
Hi Felix,
Ich hab da mal eine Frage unabhängig von der auf die ich antworte.
Ich will einen endlosen Regenbogebeffekt coden, aber weiß nicht wie das geht.
Kannst du mir da weiterhelfen?
Im Beispiel hast du ja den Code für einen Regenbogen Effekt. Reicht es den in einer Endlos-Schleife laufen zu lassen?
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.
Tobias, das Netzteil liefert 10A zieht selbst aber nicht. Von daher keine Angst was den Stromverbrauch angeht.
Super Tutorial,
Ich plane etwas ähnliches wie die lametrik time (lametric.com) und möchte dies mit den ws2801 led streifen machen. : D
Sowas könntest du ggf. auch mit LED Matrizen machen. Dafür habe ich mal eine Bibliothek geschrieben, siehe diesen Post:
Raspberry Pi LED MAX7219 Dot Matrix – Projektübersicht
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
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.
Hallo Felix, ich baue ein Großraumbüro. Möchte an der Decke am Rand ein umlaufendes LED Band bauen. Länge ca. 60m. Soll je nach Tageszeit die Farbe wechseln bzw. So tolle Effekte fahren wie in deinen Beispielen. Kannst du mir da was tolles zusammenstellen und verkaufen? Lg
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
Da fehlt ein Bindestrich:
Danke, hatte es auch gerade herausgefunden… ?
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?
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).
Gibt es so ähnlich in der C-Base in Berlin. Dort gibt es eine stählerne Wendeltreppe und sobald man einen Fuß auf eine Stufe setzt, ändert sich die Farbe.
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
Hi Michael,
eine Endlosschleife mit Python kannst du einfach mit
while True:
erstellen. Bzgl Autostart, geht entweder Cron oder wie hier beschrieben.Wo muss ich das while True: einfügen? :/ ich verzweifle hier es kommt dann bei mir mehr ein fehler das ein paar Zeilen weiter ein fehler sei :/
Hallo Felix,
Edlosschleife läuft schon 🙂
Autostart kommt dann die Tage.
mfG
Michael
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
Bist du sicher, dass es ein WS2801 ist? Die brauchen eigentlich immer nur 5V.
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
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…
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
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
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
Das Node.JS Tutorial ist schon eine Weile online: Raspberry Pi Node.js Webserver installieren und GPIOs schalten
Falls du PHP nutzt (shell_exec) dann gib auf keinen Fall das eingegebene direkt weiter, sondern filtere mit switch-case etc.
Danke für das Tutorial, blinkt super 🙂
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
Der Pi friert ein, weil die anderen LEDs wahrscheinlich dennoch Strom ziehen, was ihn überlastet. Ich rate zu einem externen Netzteil 🙂
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?
Ein Computernetzteil würde ich nicht empfehlen.
Ja, den Pi kannst du auch über 5V aus einem Netzteil steuertn. Dazu eignet sich z.B. eine USB Buchse, wie hier verwendet: Raspberry Pi mit Akkus/Batterien betreiben
OK, was spricht gegen ein PC-Netzteil? ❓
Und wo bzw. kann ich irgendwo die Helligkeit verändern?
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
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€).
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
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.
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
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
Gibt es irgendwo eine Übersicht aller Funktionen zum Steuern der LEDs? Womöglich auch mit Erklärungen?
Im Internet wird man immer auf die Seite von adafruit geleitet. Da sind lediglich zwei Beispiel-Dateien.
Ich würde gerne selbst Effekte programmieren.
Kann mir jemand helfen?
Gruß
Kutty
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:
Hast du eine Idee wo der Fehler liegen könnte?
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.
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
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
Mit:
startest du den Spaß
Wer mittlerweile python3 auf dem System installiert haben sollte, muss das Script mit dem folgendem Befehl ausführen:
python2 ws2801_example.py
Mit Python3 läuft das Script nicht mehr fehlerfrei.
Wie Ingo schon sagte, ist der Start recht einfach. Sollte nichts passieren, wird es ziemlich sicher an der Verkabelung oder dem LED Streifen liegen.
Vielen DANK !!! Es läuft !!! 😉
Es fehlte nur der „Ausführungsbefehl“ ……
…und Danke für die tolle Anleitung !!!
Meine ersten Erfolge mit dem Treppenprojekt:
http://www.kodinerds.net/index.php/Thread/53875-Treppenstufenbeleuchtung-mit-dem-Raspberry/
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
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“:
Ist ungetestet, aber das Prinzip sollte klar sein.
LG, Felix
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:
(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…
ok, hat mal nicht geklappt…
und wieder zu früh aufgegeben und gefragt.
Es fehte das richtig eingerückte:
pixels.show()
Gruß Ingo
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
Wieso denn in einen String? Du kannst ein komplettes (Farb)Array übergeben, aber ein String wäre mir neu.
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?
Gibt es eine ähnliche Bibliothek auch für Java? Oder kann man über Python das ganze auch über einen Browser steuerbar machen?
Für Java ist mir keine bekannt, aber du könntest z.B. einen Node.JS Server aufsetzen und darüber (Python) Skripte aufrufen.
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.
Da die Datenleitung des Pi’s genutzt wird muss auch GND des Pi’s angeschlossen werden. Welchen Strip nutzt du?
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.
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.
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
Könnte man machen, aber warum nicht einfach eine richtige LED Matrix nehmen?
Hallo Felix.
Weil mir noch von einem anderen Projekt ein paar Meter übrig geblieben sind.
Bzw. kann mir vielleicht jemand verraten wie ich einzelne LEDs ansteuern kann und deren Farbe ändern kann?
Danke vielmals.
Steht doch im Code:
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.
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
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?
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
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ß
Dein Spi Gerät ist wahrscheinlich entweder nicht erkannt worden oder unter anderer Nummer gelistet. Versuch mal spi.open(0,1) oder lass dir die Spi Geräte anzeigen:
http://raspberrypi.stackexchange.com/questions/50928/control-seconds-spi-interface-with-spidev
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?
Weder im Video noch in der Zeichnung werden die 5V vom Pi genommen? Der Strom würde auch nicht ausreichen bei vielen LEDs.
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?
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.
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?
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.
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?
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 🙂
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…
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
…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.
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.
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!
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
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
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?
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.
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
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?
Ich hatte das anfangs mit beliebigen GPIOs ausprobiert, jedoch hat es per SPI wesentlich besser geklappt.
Zu dem Thema SPI Chipselect hätte ich dann auch mal eine Frage. Meines Wissens hat der Pi SCLK, MOSI MISO, CS0 und CS1 davon können MOSI und MISO genutzt werden. Siehe: netzmafia.de/skripten/hardware/RasPi/RasPi_SPI.html
Ich würde ja gerne 2-4 Stripes anschließen und pro python Datei separat ansprechen bzw. via Parameter. Mit 2 Stripes, jeweils via MISO und MOSI und parallel an SCLK sollte es jedenfalls funktionieren, richtig?
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
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
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!
s/verzinktes/verlinktes/ … mistige Rechtschreibkorrektur 😉
Würde gerne das ganze auch noch Musikgesteuert abstimmen, hast du sowas schon mal gemacht oder ist das geplant?
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.)
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
Tut mir leid, den APA102 habe ich noch nicht getestet 🙁
Trotzdem eine Idee, die ich mal versuchen könnte?
Hab das Ding nun da. Tutorial kommt bald!
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!
Hab eine Android App zusammengebastelt, falls es einer gebrauchen kann:
https://github.com/Lexycon/android-ws2801
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
Sehr gerne 🙂
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
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
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
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.
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
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 ??
was ist ein blankes jessy ??
ich hab mein raspberry neu installiert und deswegen das neuste update
Hier mal von mir ein Lauflicht wie das von Knightrider
oh das war nicht so schön, admin kannst du das Editieren? 😀
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.
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
Schreibfehler evtl? in deiner Fehlermeldung steht Was2801 ?
import Adafruit_WS2801
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.
Habt ihr es auch mit pip für Python3 installiert?
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.
ich hab dich mal in die Beschreibung gesetzt. Danke für die Inspiration.
Schaut cool aus 🙂 Damit kann man sicher einige gute Party Effekte bauen
Hast du mir deinen script dafür ? Wäre dir sehr dankbar 🙂
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
Du musst die Gesamtanzahl der LEDs anpassen. Ein paar User haben ihren Beispielcode verlinkt.
Hallo Felix
ich möchte zwei LED Stripes WS2801 (jeweils 3m) als Ambilight in Reihe betreiben. Nach Konfiguration mittels HyperCon wird jedoch am zweiten Stripe nur die allererste LED mit angesteuert (Testansteuerung über SSH- Farbrad). Auch beim Einschalten wird die Regenbogensimulation nur bis zur ersten LED des zweiten Streifen übertragen. Tausche die Reihenfolge der Stripes, selbes Ergebnis (sollten also beide funktionieren). Ich hoffe du kannst mir helfen 🙂
Sind es baugleiche Streifen? Passt die Stromversorgung?
Habe beide Stripes zusammen bestellt und geliefert bekommen.
Netzteil 12 A @ 5 V (5 V werden auch ausgegeben). Habe als Test noch zusätzlich zum Anfang in der Mitte und am Ende eingespeist…Resultat bleibt das Selbe :/
Haben die Dinger einen Clip-Anschluss? Wenn ja, versuch die Datenleitungen doch mal direkt zu verlöten. Die Farben der Kabel sind oft falsch, wie ich gesehen habe.
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.
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).
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
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.
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.
Vorgabe DIN-VDE 😉
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.
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
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.
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
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.
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
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.
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 🙂
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
Das ist im Beispielcode doch vorhanden. Einfach allen LEDs die gleiche RGB Farbe zuweisen (siehe Blinken).
Danke für den Tipp, ich habe mein Projekt fertig gestellt!
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
Das ist doch im Beispielcode vorhanden. Einfach alle LEDs auf die erste Farbe setzen und die einzelne LED auf die zweite Farbe.
sry ich vestehe ich nicht ganz wäre es dann
— def set_pixel_rgb(self, n, r, g, b)?
Ja das ist die Funktion der du die Position und RGB Werte übergibst.
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 🙂
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):
——
Ist das so dann fertig? dankesehr für deine hilfe es hat mit wirklich spaß gemacht 🙂
Jap, wenn das das einzige ist, was angezeigt werden soll.
Hallo
ich habe es genauso eingegeben aber ich erhalte die Meldung
^
SyntaxError: invalid syntax
was habe ich denn da falsch gemacht?
Ich denke deine Einrückung wird anders sein?
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?
danke dir und für jeden weiteren effekt einfach dran hängen oder? danke :)) für deine hilfe
Genau und ggf. dazwischen warten (time.sleep) und das ganze in eine Endlosschleife packen.
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ß
Jap, einfach die Datenleitung am Ende des ersten Streifens an den Anfang der zweiten verbinden und die Gesamtanzahl der LEDs im Sktipt aktualisieren.
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
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
Sicher, dass es ein WS2801 Streifen ist?
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
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.
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.
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
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.
Falls du generelle Probleme bzw. Hilfe zur Einführung in die Programmierung brauchst, kannst du mal hier vorbei schauen. Zu Hyperion habe ich auch bereits ein Tutorial erstellt: Raspberry Pi Ambilight für alle Geräte mit OSMC selber bauen
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.
Hallo
leider bekomme ich das mit der einzelnen Farbe nicht hin. Ich habe den Code weiter oben kopiert
und in die Datei farbe.py eingefügt.
Wenn ich nun die Datei mit python farbe.py starte bekomme ich diese Fehlermeldung:
Woran kann das denn liegen? Mit der Einrückung der Vorletzten Zeile habe ich schon experimentiert aber ohne Erfolg.
Ist der erste Teil der gesamte Code deiner Datei? Dieser sollte nämlich stimmen.
Ja das und nur das ist in meiner Datei.
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
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.
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.
ah! okay dann werde ich das wohl mal versuchen 🙂
Danke vielmals!
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?
Ja, natürlich. Das Breadboard ist nur eine Hilfe.
Danke
Ich habe da noch einen Glitzereffekt mit dem das Licht eingeschaltet wird:
Ganz coole Sache Wimmes. 🙂 Sieht toll aus.
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
Das Ende eines Streifens entsprechend an den Anfang des anderes Streifen verbinden (jeweils passende Anschlüsse). Außerdem muss die Stromversorgung ausreichend sein.
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?
So etwas in der Art:
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
Setz am Ende jeweils ein sleep() und logge dir die Farben (mit print).
Hallo Felix, vielen Dank für deine Anleitung. Ich bin neu in dem Raspberry gebiet und beschäftige mich erst seit kurzem mit dem Thema.
Ich möchte gerne die WS2801 über die Homebridge laufen lassen. Leider finde ich zu dem thema nichts im Internet.
Bzw. ich möchte ich : “ Siri einen Befehl geben: z.b Schalte LED´S im Wohnzimmer ein“.
Dazu sollen beim anmachen die Led´s: im Lauflicht aufleuchten ( in blau) und nach dem alle dauerhaft Leuchten soll die farbe auf weiß wechseln und ggf. abdimmen…
Kannst du mir dazu Tipps geben ?
Mit freundlichen Grüßen
Bekomme folgende Fehlermeldung:
pi@pi:~ $ python ws2801_example.py
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
@ wimmes
dein Script scheint ein Fehler zu haben denn ich bekomme ein Syntax Fehler bei:
….gibt es irgendwo eine Auflistung der Befehle ???
Hi, ich habe ein sehr ähnliches Netzteil (auf 5V und 6A) auf einem 32 LED (1m) Streifen angebracht. Aktuell wollte ich es nur testen. Die Schaltung habe ich wie in der Fritzing Schaltung aufgebaut.
Als ich es startete, qualmten sofort die LED los und ich habe es sofort ausgeschaltet und überlege jetzt was ich falsch gemacht haben könnte. Es kam mir vor als ob ich tierisch zu viel Amps reingejagt habe, überlege aber warum es so sein sollte. Die Messungen am Netzteil zeigen 5V an. Einstellungen sind zwischen 4,5V und 5,5V möglich. auf 4,9 ist es aktuell eingestellt.
Wie ich jetzt weitermachen soll ist jetzt meine Frage. Bevor ich es wieder anschließe will ich ausschließen das ich irgendwas mache, um den LED Streifen zu bricken (falls nicht bereits geschehen).
„Zu viel Ampere reinjagen“ geht nicht – die Angabe ist nur dazu da, damit du weißt, was maximal geht. Braucht dein Gerät nur 0.5A, so werden nur 0.5 genutzt.
Anders sieht dies bei der Spannung aus. Kann aber auch sein, dass du VCC/GND vertauscht hast. Um nicht den ganzen LED Strip in Gefahr zu bringen würde ich ggf. eine LED abschneiden und es mit dieser testen.
Hallo Felix, ich denke das ist mir passiert. Es waren halt nur ein paar Millisekunden und das Kabel qualmte und damit den Ampere war eher ein Verzweifelungsgedanke als E-Technik 🙂
Den Strip habe ich entsorgt. Der jetzige Strip funktioniert einwandfrei und ich habe es definitiv auch richtig angeschlossen.
🙁
Ich bekomme es auch nicht hin…
Jedenfalls blinkt nichts. Bei anschließen leuchten einige LED’s in unregelmäßigen Abständen hell auf.
Bsp. die ersten beiden nicht, dann 3 Stück hintereinander, dann wieder 3 nicht, dann 2, dann wieder 2 nicht, dann eine in einer anderen Farbe. Hab das gleiche Netzteil.
Wie kann ich denn Testen ob der LED-Streifen überhaupt richtig funktioniert, oder ob der schon defekt ist 🙁
Das Beispielskript ist eigentlich dazu da, um den Strip zu testen. Wenn es trotz richtiger Verkablung nicht klappt, wird etwas mit dem RGB Strip nicht stimmen 🙁
Habe Ihn vermutlich gekillt, da das dünne schwarze und rote Kabel nicht wie die beiden dicken angeschlossen sind 🙁
Die dünnen sind nicht plus und minus, sondern das sind das grüne und das schwarze, konnte ich aber erst sehen nachdem ich den Schrumpfschlauch aufgeschnitten hatte. Das rote Kabel ist Clock.
Da ich zum ersten Testen aber das rote und schwarze Dünne angeschlossen habe, habe ich 5V auf die Clockleitung gegeben. Damit sind bestimmt die IC’s kaputt. Da kann ich wohl 40€ in die Tonne kloppen 🙂
Ich möchte jetzt eingentlich nur einen Script mit dem jeden LED einfach nur ein geschaltet wird.
Gruß
Michael
Hallo zusammen,
hab die Anleitung befolgt – bekomm diese Fehlermeldung:
Traceback (most recent call last):
File „./ws2801_example.py“, line 12, in
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE),
IO)
NameError: name ‚GPIO‘ is not defined
Kann mir jemand weiterhelfen thx
Marcel
Du musst ggf. die GPIO Library angeben (bspw. RPi.GPIO)
besten Dank für den schnelle Hilfe – copy paste Fehler hab die ersten 3 zeilen unterschlagen…
mh…. habe jetzt einen neuen Streifen bestellt, aber es funktioniert immer noch nicht 🙁
meiner ist jetzt 3 m lang habe also in Zeile 11 96 eingestellt.
Aber so richtig blinkt da nichts 🙁
Es blinkt die erste LED, dann mal wieder ein paar andere.
Wenn ich die GND vom V- abziehe blinken die ersten 20 LED chaotisch durcheinander.
Ich weiß nicht mehr weiter 🙁 hat nicht jemand ein Idee??
@Michael
hast du auch GND vom PI mit GND (V-) vom Netzteil verbunden??
Ja, genau wie auf der Zeichnung ?
Kann es daran liegen das es 96 LEDs sind?
ich kann das Band auch nicht bei 32 trennen, da dort Lötpunkte sind. Nicht so ein Feld zum abschneiden.
Könnte sein, dass zu wenig Strom durch kommt, aber ich denke eher weniger.
So langsam bin ich der Meinung das etwas mit dem „SPI“ nicht stimmt 🙁
Kann mir das noch mal einer erklären?
Es fängt schon damit an das bei „sudo raspi-config“ nicht der Punkt „SPI“ auftaucht.
Auch nach der Anleitung
„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 kommt bei “ sudo python setup.py install“ Fehler. 🙁
Das mit raspi-conifg ist irgendwie nach jedem Update wo anders. Musst ein bisschen suchen, aber es ist unter einem der Punkte definitiv vorhanden.
@wimmers
so funktioniert der Glittereffekt…..
Leider funktioniert bei mir der Glittereffekt nicht. NameError: global name ‚random‘ is not defined
Als Anfänger hab ich keine Ahnung wie ich das löse. Danke schon mal für die Hilfe
in die erste Zeile.
Bei mir funktioniert alles einwandfrei mit einer 5m WS2801. Einige Dinge habe ich bereits ausprobiert und in den Code bin ich bereits eingestiegen und passe ihn an.
Nur an zwei Dingen verzweifele ich:
1) Das Wheel würde ich gerne beschleunigen. Ich habe immerhin 160 LED und das dauert. Ich finde aber in den Funktionen nicht „DEN“ time.sleep(?) der mir diese Einstellung ermöglicht.
2) Die appear_from_back würde ich gern mit drei Pixel gleichzeitig machen und finde keinen richtigen Ansatz dafür. Die Dauer bei 160 LED brauche ich ja niemanden erklären wenn es LED für LED geht.
1) Wenn du den Wert von time.sleep geringer setzt, so wird es insgesamt schneller durchlaufen.
2) Dazu müsstest du die Schleife umbauen, sodass statt um eins gleich um drei erhöht wird. Gleichzeitig müsstest du auch immer die nächsten drei LEDs schalten und nicht nur eine einzige wie bisher.
Ich hab folgendes Problem: ich habe ein 3m langes WS2801 LED-Band, welches aber nur auf dem ersten Meter funktioniert (32 LED´s).
Auf dem zweiten Meter leuchten 6 LED´s weiß und der letzte Meter funktioniert gar nicht 🙁
Habt ihr einen Tipp wie ich das am Besten hard- bzw. softwaremäßig teste?
Ist die Stromversorgung ausreichend? Miss mal die Spannung nach dem ersten Meter.
Hallo, habe das Problem das überhaupt nix funktioniert bzw nur ein paar einzelne LED s leuchten , habe auch alles korrekt angeschlossen bzw installiert (raspian ,osmc) und noch mit einem zweiten pi3 versucht aber ohne Erfolg. Benutze den WS2801 streifen ist brandneu, habe es auch mal geschafft das fast alle leds leuchten ist aber eher glückssache aber das tutorial will einfach nicht klappen, bin langsam echt am verzweifeln 🙁 kann mir bitte jemand helfen
Heute sind meine ersten 5 Meter angekommen….die nächsten Tage dann Nachschub^^…allerdings fiel mir recht schnell auf, dass meine Farben irgendwie vertauscht sind….Und zwar Grün und Blau
Adafruit_WS2801.RGB_to_color(0, 0,255) – ist grün
Adafruit_WS2801.RGB_to_color(0, 255,0) – ist blau
Kann irgendwie nicht sein oder?
Hi Felix
ich hab da mal eine Frage da ich in der Himmbeer-Weld neu bin.
ich dein Quellcode getestet und soweit geht auch alles wenn ich das Script
im Python 2.7 starte. Verwende ich aber den Python 3.xx oder die LX console
bekomme ich immer eine Fehlermeldung das die Bibliothek nicht installiert sei.
Die Bibliothek ist zwar installiert befindet sich aber in der Unterstruktur in Python 2.7.
Wie kann ich denn die Bibliothek fuer alle Programme freigeben?
Versuch adafruit-ws2801 mal über pip3 zu installieren (sofern verfügbar).
Hallo, gibt es eine Möglichkeit die Befehle per App oder etwas anderem außer direkt am PI auszulösen und auch zu stoppen ?
Bin Neuling …. finde keinen befehlt um den bestehenden befehlt vorzeitig zu beenden …
?
Das Skript mit Strg+C, die Farben mit pixels.clear()
Nettes Tut……ich stell mir noch die Frage ( Beim Anschluß des alten PC Kabels) wie du den Leuten erklärst wie rum se den Stecker einstecken müssen. Da könnte nämlich L und N auf einmal ganz woanders sein…..
Das Netzteil ist beschriftet und die Kabel haben Farbcodes. Wer allerdings sich unsicher fühlt sollte ein bestehendes Netzteil nehmen.
Hi Felix,
bei mir kommt immer der unten angehängt Fehler.
Bin blutiger Anfänger was das Programmieren des RasPi in Verbindung mit Python angeht.
Ich hoffe Du kannst mir weiter helfen.
Lg. Robert
File „ws2801_example.py“, line 16, in
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
NameError: name ‚GPIO‘ is not defined
Dir fehlt die RPi.GPIO Bibliothek oder sie wurde nicht importiert?
Hi Felix,
ich bin leider nicht der python Experte. Wie kann man alle LEDs in einer Farbe dauerhaft leuchten lassen?
Vielen Dank!
Einmal alle LEDs in der gleichen Farbe setzen / überschreiben und anschließend nichts mehr ändern.
Hast du den Python code mal parat?
mit deinen RGB Werten zwischen 0 und 1.
’n Abend,
ich habe bzw. wir haben ein komisches Problem mit dem Skript bzw. dem LED-Strip.
Ein Schüler hat sich das Skript kopiert, den LED-Strip angeschlossen und alle Befehle wie oben beschrieben ausgeführt. Wenn er das Skript startet passiert rein gar nichts – die LEDs bleiben an oder aus, je nachdem, es gibt aber auch keine Fehlermeldung.
Stecken wir aber meine SD-Karte in seinen Raspberry funzt alles laut Plan. Probleme mit dem Skript, den PINs und dem Strip würde ich nun ausschließen. Aber wo ist dann das Problem? Die raspbian Version?
Danke für Ideen
Reinhard
Könnte sein, dass nicht die gleichen Pakete installiert sind.
Hallo Felix,
ich habe mir dein Tutorial mal zum Vorbild genommen, um mal etwas mit LED’s zu probieren. Wenn ich deinen Code verwende funktioniert er einwand frei, auch wenn ich selber noch ein paar änderungen vornehme.
Jetzt habe ich allerdings mal versucht, es mal von grund auf alleine zu versuchen, ab Zeile 18 wird mir jedoch jedes weitere „pixels“ sowie der Doppelpunkt nach der „Main-Methode?“ als Error: invalid syntax angezeigt. Bin zur Zeit etwas Ratlos über diese Meldung.
Danke für hilfen aller Art.
Hier noch mein derzeitiger Code:
In der Funktion muss die for-Schleife eingerückt sein.
Hallo Leute ich bin ein absoluter noob deshalb entschuldigt die Frage aber ich habe das Tutorial komplett abgearbeitet aber wie bekomme ich den jetzt die beispiel datei ausgeführt
Hallo
Wenn ich das Programm starte, gehen nach einander die ersten 6 LED grün an und werden dann blau. Nach ca. 20 sec. Leuchten 2 weitere led auch blau und die 10 LED grün.
Danach ist Programm Ende. Was kann ich tun ?
Hallo!
Vielen Dank für diese super Anleitung.
Habe mich mal strikt daran gehalten und alles exakt wie beschrieben realisiert. Dennoch passiert nach Programmstart nichts weiter, außer das im ersten Meter ein paar LEDs nach und nach an gehen. Im Python Shell ist auch keine Fehlermeldung; sprich das Programm läuft anscheinend ohne Probleme. Hat dafür noch jemand eine Idee? Sind das evtl. Probleme mit SPI, bzw. der Konfiguration? Ich weiß‘ nicht mehr weiter…
Vielen Dank schon mal!
Höchstwahrscheinlich wird es an der Verkabelung oder z.B. deaktiviertem SPI, etc. liegen.
Wird die Stromversorgung des Pis auch über das Netzteil geregelt oder ist das Netzteil nur für die LEDs da? Falls ja, wäre es möglich den Pi auch über die Pins mit Strom zu versorgen und würde das was an der Verkabelung ändern?
Ja, ist möglich den Pi über die Pins mit 5V zu versorgen, allerdings besteht dadurch kein Schutz (zu hohe Spannung = Pi brennt durch).
Ist es auch möglich für die WS2801 die Pins 38 und 40 zu nutzen und evtl. über die anderen SPI Pins noch eine 7 Segmentanzeige oder ein DOT Matrix mit MAX7219 zusätzlich zu betreiben?
Hi Felix, ich habe inzwischen die tutorials mit beiden LED-Streifen -Varianten durch – beide funktionieren.
ich möchte nun gerne mehrere LED-Sreifen GLEICHZEITIG steuern. Mein Pi2 oder auch der 3er haben dafür mehr als genug GPIO-Pins, ein leistungsstarkes Netzteil habe ich auch, ein 8er Relais gfs. auch.
Hast du ne Idee, wie z.B: 4x den WS2801 RGB LED Streifen GLEICHZEITG an nur einem Pi2 (oder halt Pi3) ansteuern kann ?
Am Besten gleich mit einem Muster-Script, dass ich dann für meine Zwecke ggfs. anpassen kann
Du kannst pro SPI Bus einen Streifen betreiben, oder aber die Streifen hintereinander schalten und immer nur den entsprechenden Teil setzen.
ok, wie kann ich denn feststellen, welcher SPI-Bus wo anfängt und wo aufhört ?
habe bisher nix gefunden, wo die SPI-Busse , bzw. der bus aufgeteilt ist.
Nur etwas darüber, das es diesen SPi-Bus überhaupt gibt: https://learn.sparkfun.com/tutorials/raspberry-pi-spi-and-i2c-tutorial
Du kannst mehere SPI Geräte betreiben (gleiche MISO+MOSI Leitung, aber pro Gerät ein CS [Chipselect]).
Lassen wir das. ich verstehe kein Wort, ein chipselect würde vermutlich bedeuten, dass ich immer nur den gleichen LED-Stripe-Typ verwenden muss wegen dem dort verbauten Chip. aber bei MOSI+MISO streike ich
Die Datenübertragung über SPI findest per MISO und MOSI Kanal statt. Diese werden an alle Geräte gesendet. Der Chipselect bestimmt welches Gerät „reagiert“ (angesprochen wird/ausgewählt ist).
Hallo und vielen Dank für deine Tutorials!
Mein Bewegungsmelder mit LED-Streifen klappt! Auch der Autostart ist eingestellt.
Es ist nur ein Problem noch offen. Wenn ich einschalte, schaltet Pi und LED ein und dann zeigt der LED-Streifen bis zum ersten Kontakt irgendwas an… Wie kann ich beim Autostart, also gleich am Anfang des Programms sagen: „LED-Streifen schalte dich ab!“?
Mit pixels.clear()-Befehl geht gar nix?
Wo/wie muss ich das einbauen? (Bitte für Noob verständlich)
Mit pixels.clear() werden die LEDs abgeschaltet (Änderungen nach pixels.show() effektiv).
Du könntest auch ein Relais nutzen, und so die Stromversorgung „hart“ unterbrechen.
Hallo zusammen,
ich hab insgesamt 87 LED´s. Jedoch funktionieren nur die ersten 26…die Lötstellen habe ich alle überprüft. Die Versorgungsspannung ist ok, nur die Busspannung bricht zusammen. Hat jemand eine Idee was man da machen könnte? Bleibt das Ende des LED-Bandes offen oder muss da noch + und – angeschlossen werden?
Hallo zusammen,
wie bekomme ich es hin, dass nach dem durchlaufen einer Methode nicht gestoppt, sonder mit der nächsten weitergemacht wird?
Ist das „wait=X.x“ in der Main-methode nach dem Methodenaufruf dafür verantwortlich?
Nachdem eine Methode fertig ist, wird die nächste aufgerufen. Ist die letzte Methode fertig, so beendet sich das Programm. Vielleicht möchtest du eine Dauer/Endlosschleife (while True: …)?
Hi Felix,
Ich hätte eine etwas detailliertere Frage zu den Chips auf den LEDs.
Könnten wir da mal per Mail in Kontakt treten.
Ich bin etwas in Zeitdruck, deswegen wäre es super wenn Sie sich schnellstmöglich melden könnten.
Danke
Grüße
Marc
Du kannst mich gerne kontaktieren.
Hallo zusammen,
also erstmal ist das Tutorial super. Allerdings funktioniert das ganze bei mir an 2 unterschiedlichen ws2801-LED streifen nicht. Sowohl mit den vorgefertigten Anschlüssen als auch mit eigens angebrachten.
Mein SPI sollte aktiviert sein – ich finde diesen „spi-bcm2708“ mal in den ls-mod.
Wenn ich in deinem Code die Zeile 11 anpasse und mit „sudo python ws2801_example.py“
ausführe passiert allerdings nichts. Die LEDs bleiben in dem zufälligen Zustand den sie annehmen wenn ich das Netzteil anschließe. (alle updates und upgrades sind ausgeführt – hab auch mal raspbian neu aufgespielt – auch keine verbesserung).
Es handelt sich um einen Raspberry PI 3.
Ich habe jetzt keine Ahnung was ich noch machen soll um zu checken ob mein PI beschädigt ist oder sonstiges. Kann mir jemand helfen?
Dankeschön!
Die Verkabelung ist mit Sicherheit richtig?
Da ich das ganze jetzt schon 3 – 4 mal an und angeschlossen habe gehe ich davon aus, dass es mindestens einmal gepasst haben sollte. Hab die Leitungen für GND und V+ durchgemessen und habe da auch Durchgang. Ebenfalls habe ich auch Durchgang vom Kabel zum CI, DI….bis zum nächsten CO, DO kann ich ja nicht messen. (Das sind die LEDS: https://www.amazon.de/gp/product/B0713MQ7R6/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1)
Ich besorge mir jetzt einfach mal nen zweiten PI und schaue ob es mit dem funktioniert.
Ich habe das ganze dann auch mit Hyperion probiert ebenfalls keine Funktion. Im Großen und ganzen eher ärgerlich momentan.
Eine Frage zu dem Kabeldurchmesser:
(ich möchte alles sicher und richtig machen)
Ich habe 2m LED-Streifen und die 2. Hälfte davon 16m entfernt.
– Für die 2 Datenkabel reichen 0,14mm² Litze?
– Für 5V+ / GND reicht 0,5mm² oder 1,0mm²? Wie gesagt, soll sicher sein, also Standardanforderungen /Din-Normen erfüllen?
Gibt es irgendwelche Faustregeln? Im Inet ist immer wieder widersprüchliches…
Verbindliche ANtworten zu Din Normen kann ich dir nicht geben, aber 0.5mm² sind zu wenig. Bei 16m Entfernung wirst du bei 5V (unabhängig von der Kabeldicke) einen Spannungsabfall haben.
Ich habe zufällig noch ein 0.75mm Kabel vorrätig. Würde das wenigstens reichen?
Wie kann ich mir das selbst ausrechnen?
Ne, falsch… Sorry…
Einfach vergessen… muss umplanen 🙂
Andere Frage zum Code… ohne dich zuspamen zu wollen.
Im Code hast du ja alle LEDs angesprochen , in einem Post bei den Kommentaren hast du geschrieben, wie man einzelne LEDs steuert, statt i einfach die LED-Nummer. Aber wie steuere ich ganze Gruppen, z.B. LED 1 bis 6?
Ich möchte nicht 18 Mal den halben Code abtippen, um alle meine LEDs einzeln anzusprechen…
Z.B. mit einer for-schleife, in der du entsprechende Pixel setzt?
Kann ich auch den Raspberry Pi direkt mit an mein Schaltnetzteil (5V / 60A) hängen? Der braucht ja auch 5V und ich könnte mir das Steckernetzteil vom Raspi sparen. Wie würde die Verkabelung dann aussehen?
Du hast ein Netzteil, das 60A kann?!
Der Pi kann auch über den 5V und GND Pin mit Strom versorgt werden (aber Achtung, kein Überspannungsschutz).
Ja, das 60A Netzteil habe ich bei Amazon entdeckt. OK, 40A hätten auch ausgereicht aber der Preis war nur unwesentlich höher. Habe mir eine Matrix mit 320 LEDs (32 x 10) gebaut. Da werden dann schon ca. 19,2 A fällig wenn alle LEDs leuchten. Diese China Netzteile sind vielleicht doch nicht so stabil, dass ich wohl doch das Steckernetzteil für den Pi benutze – sicher ist sicher 🙂 Danke für die schnelle Antwort.
Hallo ,
Ich habe für meinen Sohn ein Ambilight gebaut. Läuft super, habe aber noch 2 Meter WS2801 über die ich gerne mit dem PI3 über Musik steuern möchte. Leider finde ich nix für die WS2801, immer nur WS2812 und Andrino. Könnt ihr mir helfen?
Gruß Joachim
Willst du sie mit dem Raspberry Pi oder Arduino steuern?
Hey, mit PI.
Dann verstehe ich das Problem nicht. Dieses Tutorial ist doch für den Pi und WS2801 Streifen.
Ja das stimmt. Bin aber Neuling in Sachen programmieren und das mit dem einbinden von der Soundkarte klappt aber nicht. Sollte funktionieren wie früher die alten Lichtorgeln. Mit Lightshow Pi habe ich das mit normalen Lampen bzw. LED’s und einem Halbleiterrelais hinbekommen aber nicht mit den WS2801. Sollte ungefähr so aussehen.
Hi, das ist quasi mein erstes großes Projekt. kenne mich leider noch sehr wenig aus und hangel mich immer an den tutorials rum. jetzt habe ich aber die ganze zeit einen fehler und weiß nicht was ich tun soll
Traceback (most recent call last):
File „ws2801_example.py“, line 31, 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
Oke, habe den raspberry nochmal neu aufgesetzt. Jetzt funktioniert es :3
Könnte jemand den Befehl mit einer Schleife posten? Bekomme es nicht hin alleine 🙁
Ja, ne Schleife… da habe ich gerade auch ein Problem. 🙂
Ich habe dieses Tutorial hier mit deinem PIR-Tutorial verbunden. Jetzt möchte ich gerne eine Schleife oder IF ELSE, damit sich das Programm von selbst ausschaltet, wenn es eine Datei im Stammverzeichnis nicht mehr findet. Aber alle Versuche While True oder If Else einzubauen sind gescheitert.
Kann jemand helfen?
hier mein (der kombinierte Tutorial-) Code:
import RPi.GPIO as GPIO
import time
import Adafruit_WS2801
import Adafruit_GPIO.SPI as SPI
import os.path
import sys
SENSOR_PIN = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
SENSOR_PIN2 = 24
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN2, GPIO.IN)
PIXEL_COUNT = 24
SPI_PORT = 0
SPI_DEVICE = 0
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
filename = „/var/www/html/pir-zeit-session.txt“
if (os.path.isfile(filename)): <- Hier ein Reststück meiner Versuche…..
def lights(order='up', mode='on'):
start = 0
stop = pixels.count()
direction = 1
if order == 'down':
start = 23
stop = -1
direction = -1
hue1 = 0
hue2 = 0
hue3 = 0
if mode == 'on':
hue1 = 40
hue2 = 40
hue3 = 0
for i in range(start, stop, direction):
pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color(hue1, hue2, hue3))
pixels.show()
time.sleep(0.05)
def up(channel):
print('Lia kommt zu uns')
pixels.clear()
lights()
time.sleep(45)
lights(mode='off')
def down(channel):
print('Lia geht in ihr Bett')
pixels.clear()
lights(order='down')
time.sleep(45)
lights(order='down', mode='off')
try:
GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=up)
GPIO.add_event_detect(SENSOR_PIN2 , GPIO.RISING, callback=down)
while True:
time.sleep(0.001)
except KeyboardInterrupt:
print "Beende…"
pixels.clear()
GPIO.cleanup()
Hallo, erstmal Danke für das Tutorial, allerdings funktioniert es nicht bei mir. Deswegen hier ein Statusbericht:
Problem ist an sich simpel: Programm leuft, Lampen bleiben aus.
1.Die Stromversorgung:
Leuft stabil und erreicht das Ende des 5m Bandes. Woher ich das weiß? Die letzte LED und eine zwischendurch haben einen Wackelkontakt und leuchten wenn man den Chip berührt. Das Netzteil hat ausreichend V und A, daran liegt es nicht.
2. LEDs:
Genau wie vorgegeben: WS2801
3. Verkabelung:
Müsste eigentlich auch funktionieren. Die Pins sind richtig gewählt, es wurde auch nocheinmal mit anderen Quellen überprüft. (Es sind allerdings nicht Pin19 und 23 sondern 10 und 11; auf dem Schaltbild stimmt es aber. Hier kann man es nachlesen: https://www.raspberrypi.org/documentation/usage/gpio/)
Es wurde alles mit Jumperkabeln verbunden, diese wurden schon auf einen möglichen Defekt untersucht: sie funktionieren alle einbandfrei.
Nun frage ich mich: Wieso funktioniert es nicht?
Schon mal im Vorraus Danke für jegliche Hilfe.
Achso, SPI-Schnittstelle wurde in den Einstellungen aktiviert
Obwohl die LED Kette ein Bus- Sytem darstellt, muss der Anschluss von ‚vorne‘ erfolgen.
Auf der Kette sind Pfeile aufgedruckt, diese zeigen die Richtung an. Ich musste beim Reststück tatsächlich Kabel anlöten (CIK und SI) -> http://powerpi.de/wp-content/uploads/2015/02/laufrichtung_ws2801_led_stripe_ambilight.jpg
Hallo
Ich habe den Beispielcode erfolgreich mit 192 LED´s laufen.
Jetzt möchte ich aber zur eigentlichen Anwendung alle 192 LED eine bestimmte Farbe zuweisen. Diese wird einmal festgelegt und später wird nur noch die Helligkeit angepasst. Dass passiert in Bereichen von ca 10 LED´s. So sollen in einem vorher festgelegten Ablauf bestimmte Bilder an der Wand beleuchtet werden.
Wie gehe ich dafür am besten vor. Schreibe ich 192 Zeilen für jede Farbe?
Hi da, top Tutorial, richtig klasse Arbeit!
Ich versuche gerade einen zweiten Stripe via Pin 38 und Pin 40 anzusteuern.
pin19=SPI0 MOSI – DI
pin23=SPI0 SCLK – CI
pin38=SPI1 MOSI – DI
pin40=SPI1 SCLK – CI
Nachdem ich dtoverlay=spi1-3cs enabled habe sehe ich folgende devices
/dev/spidev0.0 /dev/spidev0.1 /dev/spidev1.0 /dev/spidev1.1 /dev/spidev1.2
Nun habe ich rein von der Logik her wie bei SPI0 den Pin 38 mit DI und Pin 40 mit CI verbunden aber der Stripe bekommt kein Signal. Siehe hier > https://pinout.xyz/pinout/spi
Wenn meine Annahme korrekt ist dann müsste das doch jetzt klappen oder habe ich komplett die falschen Pins?
Ist das überhaupt die richtige Vorgehensweise und gibt es noch eine andere Möglichkeit mehr als 1 bzw. 2 Stripes anzusteuern?
Grüße
Sebastian
Hi nochmal!
Es hat geklappt, ich konnte den 2. Stripe nun ansteuern. Für alle die das gleiche Problem haben, vorher daran denken dtoverlay=spi1-3cs in der /boot/config.txt einzutragen, danach wird auch SPI1 aktiv 🙂
spi(0,0) ergibt somit SPI_PORT=0 und SPI_DEVICE=0
pin19=SPI0 MOSI – DI
pin23=SPI0 SCLK – CI
spi(1,0) ergibt somit SPI_PORT=1 und SPI_DEVICE=0
pin38=SPI1 MOSI – DI
pin40=SPI1 SCLK – CI
Grüße
Sebastian
Hi … Vielen dank für das turorial
ich hab zwar mittlerweile ein andere Library verwendet, aber die Grundidee kam von deinem Tutorial.
ich hab aus 2*2m Strips eine Runde Wandlampe gebaut. Dafür habe ich eine runde Plexiglas-Scheibe (Durchmesser ca 55cm) und einen LED Stripe nach innen und einen nach aussen positioniert.
Somit kann man schöne rotierende Muster generieren.
Erste Kostprobe mak ich mal getweetet :
https://twitter.com/GERAFFELOrga/status/1057406803812716544
Hallo Felix,
ich beschäftige mich jetzt seit 4 Wochen mit dem Pi und habe schon fast deine gesamten Tutorials durchgearbeitet: Vielen Dank für die ganzen Anleitungen.
Klasse.
Aktuell plane ich auf Basis diese LED-Stips Tutorial eine Tageslicht (Wanderung und Helligkeit) Simulation fürs Aquarium.
Ich bin mal gespannt ob ich das hinkriege.
Auf jeden Fall ist das mächtig inspirierend hier.
Hallo Miteinander
aufgrund der fehlenden Suche bzw. meiner unwissenheit,
hätte ich eine Frage.
Wie kann ich in dem vorandenen Beispielcode einen loop bzw eine schleife setzen.
mit if < xx bekomme ich immer einen fehler.
kann mir hier jemand helfen?
Moin zusammen, ich habe eine 35m Carrera Bahn Digital 124 und möchte ein LED Beleuchtung installieren. Es soll eine Tag und eine Nachtstimmung generiert werden. Diese sollen in einem Zeitfenster z.B. 10min ineinander übergehen. Desweiteren wenn möglich, soll beim drücken des Pacecar Tasters(hier sind parallel schon zwei weitere Taster angeschlossen) an der Control Unit der Carrerabahn eine blinkende Gelblichtstimmung hergestellt werden. Zum Verständnis: Beim drücken der Taste fährt das Pacecar aus der Boxengasse und bei der nächsten Betätigung der Taste fährt es dorthin zurück. Hier soll dann die vorherige Stimmung wieder weiter leuchten. Ich selbst bin Elektriker und Arbeite als Lichttechniker. RasperryPi ist aber Neuland für mich und brauche daher Support bei der Programmierung. Mfg Mark
Hat noch jemand coole effekte ?
Ich habe den Glitzereffekt versucht, klappt allerdings nicht.. Habe auch null Plan vom Code.. werde ich mir aber versuchen anzueignen..
Ich bin auch kein CodeProfi, habe mir aber mal einen Breathe (Atmen) Effekt geschrieben.
Halber Streifen Rot, halber Streifen Blau gibt in der MItte nen Lila und dann dimmen und heller machen. Ich vermute das würde sich schöner lösen lassen, aber es funktioniert.
import time
import RPi.GPIO as GPIO
import Adafruit_WS2801
import Adafruit_GPIO.SPI as SPI
PIXEL_COUNT = 69
SPI_PORT = 0
SPI_DEVICE = 0
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE), gpio=GPIO)
def decreaseBrightness(pixels, wait=0.01, step=1):
for j in range(int (256// step)):
for i in range(pixels.count()):
r, g, b = pixels.get_pixel_rgb(i)
r= int(max(0, 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 > 0:
time.sleep(wait)
def increaseBrightness(pixels, wait=0.01, step=1):
for j in range(int(255 // step)):
for i in range(pixels.count()/2):
r, g, z = pixels.get_pixel_rgb(i)
t, f, b = pixels.get_pixel_rgb(i + pixels.count()/2)
r = int(max(0, r + step))
b = int(max(0, b + step))
pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( r, 0, 0 ))
pixels.set_pixel((i + pixels.count()/2), Adafruit_WS2801.RGB_to_color( 0, 0, b ))
pixels.show()
if wait > 0:
time.sleep(wait)
def breathe(pixels):
decreaseBrightness(pixels)
increaseBrightness(pixels)
if __name__ == „__main__“:
pixels.clear()
pixels.show()
for i in range(0,pixels.count()/2):
pixels.set_pixel(i,Adafruit_WS2801.RGB_to_color(255,0,0))
for j in range((pixels.count()/2),pixels.count()):
pixels.set_pixel(j,Adafruit_WS2801.RGB_to_color(0,0,255))
pixels.show()
while True:
breathe(pixels)
Hallo Sebastian,
ich beschäftige mich auch mit dem Code aus dem Tut.
Deinen Code habe ich als in den Raspi eingebaut und laufen lassen. Ach ja, bitte schreiben / kopiere Deinen Code doch bitte mit Einzüge und Leerschritte, dann ist er besser lesbar.
„def decreaseBrightness(pixels, wait=0.01, step=1):
for j in range(int (256// step)):“
Hier kanst Du „step“ weg lassen und wenn Du „//“ rechnest brauchst du nicht noch „int“ das ist DoppelGemoppelt 🙂
„if wait > 0:“ = kannst Dir sparen.
Ich habe mit Deiner erlaubniss den Code angepasst: (keine Endlosschleife – sondern 500 Wiederholungen) (Code getestet)
#!/usr/bin/env python
import Adafruit_WS2801
import Adafruit_GPIO.SPI as SPI
PIXEL_COUNT = 50
SPI_PORT = 0
SPI_DEVICE = 0
def increase_brigthness(pixels, delay=0.01):
for j in range(255):
for i in range(pixels.count() // 2):
r, g, z = pixels.get_pixel_rgb(i)
t, f, b = pixels.get_pixel_rgb(i + (pixels.count() // 2))
r = max(0, r + 1)
b = max(0, b + 1)
pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( r, 0, 0 ))
pixels.set_pixel((i + pixels.count() // 2), Adafruit_WS2801.RGB_to_color( 0, 0, b ))
pixels.show()
time.sleep(delay)
def degrease_brigthness(pixels, delay=0.01):
for j in range(255):
for i in range(pixels.count()):
r, g, b = pixels.get_pixel_rgb(i)
r = max(0, r – 1)
g = max(0, g – 1)
b = max(0, b – 1)
pixels.set_pixel(i, Adafruit_WS2801.RGB_to_color( r, g, b ))
pixels.show()
time.sleep(delay)
def clear(pixels):
pixels.clear()
pixels.show()
def main():
pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
clear(pixels)
for b in range(500):
increase_brigthness(pixels)
degrease_brigthness(pixels)
clear(pixels)
if __name__==“__main__“:
main()
Oh, jetzt hab ich’s gesehen, die Formatierung geht verloren. Sorry für meinen Kommentar dazu.
Hallo zusammen,
ich fange gerade an mich mit dem Raspi und Python anzufreunden.
Ich habe dieses Tutorial nachgebaut , da ich es gerne zum lernen und rumprobieren nutzen möchte. Nach etwas fummeln hat dann auch (fast) alles geklappt.
Irgendwie stimmen die Farbwerte nicht.
Wenn ich z.B. eine Led Blau leuchten lassen möchte, ist das bei mir (0,255,0) und nicht wie in Tabellen angegeben (0,0,255).
Wie kann ich eigentlich einzelne Led’s ausschalten ?
Mit pixels.clear() wird ja der ganze Streifen ausgeschaltet. Kann man dem Befehl nur bestimmte Led’s zuweisen ?
Wäre schön, wenn mir jemand von euch behilflich sein könnte.
Das mit den led’s einzeln ausschalten hat sich erledigt.
und wie hast Du das bewerkstelligt?
Ich habe einfach die einzelnen rgb werte auf null gesetzt.
Lässt sich mit dem WS2081 auch einzelne RGB LED’s steuren oder bin ich zwingend nauf einen Streifen angewiesen. Ich habe einige Multicolor LED’s bereit verbaut und möchte die verändern können
Hallo Zusammen,
ich möchte mit dem RB Pi eine FarbenUhr bauen.
Dabei soll zu jeder vollen Stunde eine „ganze“ Farbe leuchten. Z.B. für 12:00 Uhr = Gelb..
Die Übergänge sollen faden so das man die halbe Stunde abschätzen kann. Der RB soll noch ein Display (SunFounder) bespielen der die Minuten zeigt (Zahlen, Farbe …)
Hat so was schon mal jemand gemacht und kann mir helfen (bin Anfänger)
Viele Grüße Frank
Hallo Raspy-Fans
Kann mir jemand einen Quellcode zeigen, der meine WS2018 LED-Leiste in Regenfarben erstrahlen lässt, ohne dass diese unter Bewegung steht.
Bin neu auf diesem Themengebiet unterwegs und habe aufgrund noch mangelnder Programmiererfahrungen Schwierigkeiten dieses Peoblem zu lösen.
Würde mich über eine Antwort freuen,
Stefan
Hey Leute,
ich versuche seit Tagen das Tut_ in einer schleife laufen zu lassen,bekomme es aber in keinster weise hin.
Kann mir jemand von euch bitte mal die Lösung für mein Problem helfen ?!
Die ganzen Beispiele im Internet bezüglich der Schleifen, basieren auf Textausgabe, wie binde ich da die Pixel ein ?
Oder bin ich auf dem falschem weg ?
Gruß
Thorsten
Hey,
vielen Dank für die guten Tutorials hier!
Gaaaanz wichtig weil ich jetzt auch seit 2 Tagen am verzweifeln war weil nichts passierte, bitte hinzufügen dass der LED Streifen eine Richtung hat! Die aufgedruckten Pfeile müssen vom Anschluss wegzeigen! Sonst geht nämlich gar nichts.
Hallo, vielen Dank für das Tutorial.
Ich möchte das Ambilight bei meiner Leinwand nachrüsten. Die Länge der WS2801 müsste allerdings 7,16m betragen. Soweit ich weiß gibt es nur 5m.
Gibt es die Möglichkeit, einen zweiten LED-Streifen an die 5m anzufügen und geeignet anzusteuern? Habt ihr vielleicht Ideen dazu?
Ansonsten bleibt mir nur 5m zu kaufen und die LEDs einzeln (!!) abzuschneiden und in größeren Abständen wieder aufzusetzen, so dass eine Gesamtlänge von 7,16m entsteht.
Danke für eure Hinweise!
Bei Python3 bekommt man einen Fehler, dass das adafruit-module nicht vorhanden ist.
ImportError: No module named adafruit_WS2801
Dann muss man
sudo pip3 install adafruit-ws2801
eingeben. Dann klappt es.
Gruß
Kutty
Also ich bekomme immer folgenden Fehler:
pi@raspberrypi:~/Adafruit_Python_WS2801/examples $ ./rainbow.py
from: can’t read /var/mail/__future__
./rainbow.py: Zeile 6: import: Kommando nicht gefunden.
./rainbow.py: Zeile 9: import: Kommando nicht gefunden.
./rainbow.py: Zeile 10: import: Kommando nicht gefunden.
./rainbow.py: Zeile 14: PIXEL_COUNT: Kommando nicht gefunden.
./rainbow.py: Zeile 19: PIXEL_CLOCK: Kommando nicht gefunden.
./rainbow.py: Zeile 20: PIXEL_DOUT: Kommando nicht gefunden.
./rainbow.py: Zeile 21: Syntaxfehler beim unerwarteten Wort `(‚
./rainbow.py: Zeile 21: `pixels = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT, clk=PIXEL_CLOCK, do=PIXEL_DOUT)‘
Egal ob ich es mit der Methode von Github oder der pip/pip3 methode installiere…
Ein LED_Race
mit WS2801 und Raspberry
wäre cool
Hi,
wenn ich meine LEDs verbinde, leuchtet leider die 1. LED durchgängig, die restlichen LEDs blinken nur kurz auf, ich kann aber keine der LEDs steuern. Was mache ich falsch? (Eigentlich alles richtig verkabelt, habe 100 mal geguckt.) Reicht es, wenn ich einen GND Anschluss vom Pi an eine Reihe des Breadboards lege, und den GND-Pin auf die gleiche Reihe lege?
Die Verkabelung solltest du genau so machen, wie hier gezeigt. Heißt umbedingt GND mit dem Spannungsgerät verbinden.
Checke die Richtung noch ein 101-tes mal. Sind die LEDs in richtiger Richtung angeschlossen? Das war bei mir ein Problem. Auf den LEDs sind kleine Pfeile drauf. Das zeigt die Richtung.
Hi, danke erstmal für das Tutorial.
Mein Plan ist, mit dem Stripe den Sonnenverlauf zu simulieren, also der Stripe hängt dann später in nem Halbkreis über einem Modell, und soll da die Sonne simulieren. Wie bekomme ich es hin, dass die „Sonne“ in einem weichen Übergang über das Band weiterläuft? Habe bis jetzt nur hinbekommen, dass der nächste Pixel abrupt angemacht wird.
Lieben Dank schonmal für die Hilfe
Hallo, da ich vor einiger Zeit einen Sonnenaufgang simuliert habe denke ich, dass dein Problem hier ein ähnliches ist.
Versuche einmal, die Leuchtkraft einer LED von gelb nicht sofort auf blau zu stellen, sondern das langsam über zu blenden. Dafür musst du dir natürlich ein Skript schreiben. Ich empfehle deswegen, dass sie Sonne mehr als nur eine LED Breite einnimmt.
Hallo. Besten Dank für die Tutorials WS2801 und dem GUI. Konnte beide sehr gut für mein Projekt Docking Bay 327 einsetzen. Anbei noch der Link zum Video auf YouTube.
Vielen vielen Dank nochmals.
youtu.be/BixvTiubkEA
hallo,
super Tutorial aber wie füge ich das in ein Bewegungsmelder ein ? vielleicht kann mir ja einer helfen
Moin,
hätte da mal ne Frage. Müssen die GPIOs die du verwendet hast umbedingt genutzt werden, oder kann man auch andere verwenden. Wenn ja, wie kann ich dem dann sagen welche pins er zu nutzen hat. Die Pins die du nähmlich verwendest, sind bei mir schon belegt.
Grüße Kenny
Danke, hat alles funktioniert 🙂
Moin,
zunächst vielen Dank für das nette Tutorial. Leider funktioniert es bei mir nicht und der Strip bleibt dunkel. Ich suche gefühlt schon ewig nach einer Lösung leider bisher ohne Erfolg.
Den Aufbau habe ich versucht nachfolgend zu skizzieren:
Skizze:
https://www.q7sfdigp.de/aufbau1.png
Foto vom Aufbau:
https://www.q7sfdigp.de/aufbau2.jpg
BTF LED Strip, 5V, 32LEDs/m (Model: BTF-5V-032L-B)
Ich habe zusätzlich einen Level Shifter (74HCT125N) für die Umwandung 3.3V zu 5.0V integriert. Angeschlossen sind zwei Netzteile (USBC für den Raspi und ein Hanmatek 5V/3.1A für den Strip).
Am Ende des Led Strips liegen ~4.9V an.
Der Level Shifter liefert im Solo-Test die gewünschten 5V am Ausgang.
Der Hersteller der LED ist leider nicht konsequent was die Belegung der Kabel betrifft. Die ändern sich zwischen dem Stecker und der reinen Spannungsversorgung.
SPI ist aktiv:
/boot/config.txt
dtparam=spi=on
sudo raspi-config nonint get_spi
0
lsmod | grep spi_
spi_bcm2835 20480 0
Da ich das ganze mit Python3 später nutzen möchte, habe ich folgende Bibliothek genutzt:
https://github.com/adafruit/Adafruit_CircuitPython_WS2801
Ein ganz einfaches Beipiel funktioniert leider nicht. Es treten hier und da mal komische Effekte auf (einzelne LED leuchtet blau oder andersfarbig), aber ein System ist nicht zu erkennen.
Ich hoffe sehr jemand kann helfen. Habe schon große Lust, den Entwurf in seine Einzelteile zu zerlegen.
Danke
Peter
So, am Ende war die Lösung nicht so schwer, wenn man denn weiß wie es geht. Mich hat es auf jeden Fall wahnsinnig gemacht.
Ich habe die Ports angepasst und dann lief es auch sofort. Allerdings hoffe ich, dass der Aufbau und das Beispiel auch anderen hier hilft.
leds = adafruit_ws2801.WS2801(board.SCK, board.MOSI, 5)
Danke und viel Spaß
OMG! Habe gerade 4 Stunden nach dem Fehler gesucht, warum die LED-Kette (5m/160LEDs an 5V10A-Netzteil) nicht so funktioniert hat, wie sie sollte. Beide Klassen (WS2801 und WS2801Pixels) ausprobiert und jedes Mal konnten die einzelnen LED-Positionen nicht genau angesprochen werden. Fehler auf Layer-8: Masse an Pin 8 und nicht Pin 6 angeschlossen. Unnötig, aber viel dabei gelernt.
Super Tutorial! Danke und weiter so!
Hallo😄
Da ich gerade ein neues Zimmer beziehe und noch einen RasPi 3B übrig habe, kam ich auf die Idee eine LED Digital Segmentuhr zu bauen. Jedoch bin ich blutiger Anfänger was programmieren angeht.
Kannst du mir da weiter helfen?
THX
Hollminator
Geiles Tutorial,
bin absoluter Neuling und ein bisschen angestachelt von meinem großen Sohn (23 Jahre) der der Meinung ist, dass ich selbst mit femder Hilfe die Sache nicht gemeistert bekomme…
ich möchte gerne folgendes realisieren und meinem Sohnemann zeigen, dass Ihr ( ich ) „schlauer“ seid (bin) als mein Großer… 🙂
Folgendes Szenario steht an:
Bibliothek und Einstellungen von diesem Tutorial sind eingestellt.
48 LED´s WS 2801 mit einem Raspberry 3 plus inkl. separates Netzteil für eine sichere 5V Versorgung. Elektrische Verdrahtung ist kein Problem…
Mein Problem ist die Programmierung…
Zu realisieren gilt:
• Umlaufende Farben (Weiß & Grün) Geschwindigkeit und Helligkeit einstellbar
• Weiß und Grün abwechselnd (alle LED´s) je ca. 5x pulsierend von dunkel zu hell, anschließend wiederholend (die pulsierende Zeit einstellbar)
• zusätzlich Punkt 1 und 2 in einem Programm vereint (einstellbare Zeit für Übergang von Punkt 1 auf Punkt 2)
Die Krönung wäre natürlich das ganze per App auszuwählen um die verschiedene Abläufe zu starten…
Kann mir jemand bei diesem Vorhaben helfen???
Geiles Tutorial,
bin absoluter Neuling und ein bisschen angestachelt von meinem großen Sohn (23 Jahre) der der Meinung ist, dass ich selbst mit fremder Hilfe die Sache nicht gemeistert bekomme…
ich möchte gerne folgendes realisieren und meinem Sohnemann zeigen, dass Ihr (ich) „schlauer“ seid (bin) als mein Großer… 🙂
Folgendes Szenario steht an:
Bibliothek und Einstellungen von diesem Tutorial sind eingestellt.
48 LED´s WS 2801 mit einem Raspberry 3 plus inkl. separates Netzteil für eine sichere 5V Versorgung. Elektrische Verdrahtung ist kein Problem…
Mein Problem ist die Programmierung…
Zu realisieren gilt:
• Umlaufende Farben (Weiß & Grün) Geschwindigkeit und Helligkeit einstellbar
• Weiß und Grün abwechselnd (alle LED´s) je ca. 5x pulsierend von dunkel zu hell, anschließend wiederholend (die pulsierende Zeit einstellbar)
• zusätzlich Punkt 1 und 2 in einem Programm vereint (einstellbare Zeit für Übergang von Punkt 1 auf Punkt 2)
Die Krönung wäre natürlich das ganze per App auszuwählen um die verschiedenen Abläufe zu starten…
Kann mir jemand bei diesem Vorhaben helfen???
Geiles Tutorial,
bin absoluter Neuling und ein bisschen angestachelt von meinem großen Sohn (23 Jahre) der der Meinung ist, dass ich selbst mit fremder Hilfe die Sache nicht gemeistert bekomme…
ich möchte gerne folgendes realisieren und meinem Sohnemann zeigen, dass Ihr (ich) „schlauer“ seid (bin) als mein Großer… 🙂
Folgendes Szenario steht an:
Bibliothek und Einstellungen von diesem Tutorial sind eingestellt.
48 LED´s WS 2801 mit einem Raspberry 3 plus inkl. separates Netzteil für eine sichere 5V Versorgung. Elektrische Verdrahtung ist kein Problem…
Mein Problem ist die Programmierung…
Zu realisieren gilt:
• Umlaufende Farben (Weiß & Grün) Geschwindigkeit und Helligkeit einstellbar
• Weiß und Grün abwechselnd (alle LED´s) je ca. 5x pulsierend von dunkel zu hell, anschließend wiederholend (die pulsierende Zeit einstellbar)
• zusätzlich Punkt 1 und 2 in einem Programm vereint (einstellbare Zeit für Übergang von Punkt 1 auf Punkt 2)
Die Krönung wäre natürlich das ganze per App auszuwählen um die verschiedenen Abläufe zu starten…
Kann mir jemand bei diesem Vorhaben helfen???
Sorry,
bin mit der Browsertechnik nicht klar gekommen 🙂
Moin!
Das Tutorial ist wirklich prima und enthält alles, was für den Einstieg in Bezug auf „WS2801“ notwendig ist! Allerdings bricht der Befehl „sudo pip install adafruit-ws2801“ mit dem Hinweis, dass „SetupTools“ zu alt sei, einfach ab. Ich habe einen Tag recherchiert und herumprobiert, bis ich die Lösung hatte. „sudo pip install –upgrade setuptools“ aktualisiert das SetupTool und die Adafruit Bibliotheken werden problemlos installiert.
Moin zusammen,
hat denn keiner eine Idee oder die Muße mir zu helfen um das Projekt (gegen meinen Sohn 🙂 ) unzusetzen?
Ich wäre sehr dankbar.. 🙂
Hallo zusammen,
ist es möglich die den Pi mit dem Handy zu verbinden und so die Led zu steuern?
Ich kenne mich leider nicht genug damit aus.
Danke schonmal im voraus!!!
Hallo, ich habe mich beim Aufbau an das Tutorial gehalten, Hyperion wurde eingerichtet, die Installation scheint OK zu sein. Wenn ich den PI gebootet habe und den LED-Streifen anschliesse leuchten die meisten LED’s weiß. Will ich eine Farbe einstellen erhalte ich die folgende Meldung, der Streifen bleibt weiß.
ssh out: hyperion-remote –clearall
ssh in: hyperion-remote:
ssh in: version : V1.03.5 (GitHub-66bef6b/fb413cd-1566231780
ssh in: build time: Aug 25 2019 10:39:08
ssh out: Unable to connect to host
Hi,
danke für die Super Anleitung allerdings funktioniert das bei mir nicht. Die LED`s werden, unabhängig ob der Pi angeschlossen ist oder nicht, einfach nur unterschiedlich weiß beleuchtet und werden extrem heiß 🙁
Auf dem Pi erscheint beim ausführen der Datei: ModuleNotFoundError: No module named ‚Adafruit_WS2801‘
Ich habe jetzt schon mehrmals alles installiert und den Pi neu aufgesetzt, leider ohne Erfolg.
SPI wurde aktiviert sowie mehrmals die Bibliotheken neu installiert.
Hat noch jemand eine Idee ?
Grüße
Ich möchte meinen Pool auf der Gartenterasse damit in Szene setzen und das ganze gekoppelt mit Homematic, Nodered, Neo auch über das Handy steuern. Mein Test Aufbau funktioniert schon ganz gut, allerdings habe ich ein Problem, ich kann die einzelnen Funktionen nicht mit aktuellem Status verlassen. Ich will sagen, wenn während der Regenbogen läuft (wheel) oder die Farbe wechselt die Funtkion mit Return oder Break abbreche, wird zunächst auf die Start Konstelation der Pixel zurück
geschaltet. Dieser Effekt gefällt mir nicht. Ich möchte den aktuellen Zustand einfrieren, dann runter dimmen und den nächsten Effekt starten können. Gibt es eine Möglichkeit die Functionen mit aktuellem Status zu verlassen, finde in diversen Tutorials zu Python nichts passendes. Hat hier jemand einen Ansatz für mich.
Ansonsten eine Tolle Libary, zum lernen und erweitern.
Eine Nacht drüber schlafen und man erkennt, das Problem lag an ganz anderer Stelle im Code……
Hallo vorab erstmal ein sehr gutes Tutorial um in die Thematik ein zu steigen. Jedoch habe ich aktuell das Problem mit meiner 5m (160 LED’s) WS2801 das Problem, dass die LED´s während der Animation in anderen Farben aufflackern, weiß jemand eventuell woran das liegen könnte?
Ich benutze ein Raspberry PI 4B+ und habe mir die im Tutorials angegebenen Materialien gekauft sprich Netzteil (dies ist auf 5V eingestellt) usw. Die Verpinnung habe ich auch schon überprüft da ist alles ok.
Gruß Mike
Pingback: Raspberry Pi LED Effekt – hsga
Hallo,
auch im Jahr 2022 macht das Tutorial richtig spass. Vielen Dank dafür.
Ich habe alles 1:1 nachgebastelt und verwende ein separates Netzteil für das Lichtband.
Leider habe ich folgenden Effekt: egal, welchen Befehl ich benutze (z.B. beim Abspielen des Example Programms) leuchten die jeweils angesteuerten LEDs nur kurz auf uns erlöschen sofort wieder. Sie erscheinen in der richtigen Reihenfolge und Farbe…. aber jeweils leider nur für den Bruchteil einer Sekunde.
Irgendeine Idee, wo das Problem liegen könnte?
Vielen Dank,
Matthias
Ah, noch eine zusätzliche Info: ich verwende ein an Pi ZERO…. was aber eigentlich keinen Unterschied machen sollte, oder?
Hahaaa…. kaum gepostet, schon den Fehler selber entdeckt: ich hatte das Netzt das LED-Band auf 12V eingestellt. Sobald ich es auf 5V gestellt hatte, funktionierte es einwandfrei. Also: nicht den selben Anfängerfehler machen…. 🙂
Leider wird nicht darauf eingegangen wie der Anschluss ohne Schaltnetzteil (empfohlen) sprich mit Power Jack Adapter und Netzteil auszusehen hat. Benötige ich ein Breadboard? Wo muss andernfalls etwas gelötet werden? Die Amazon Links leiten auf eine Suche bei der hauptsächlich WS2812 zu sehen sind, ein einziger Artikel ist in 1m WS2801 aber mit schlechten Bewertungen. Bin nach Lesen des Tutorials leider nicht wirklich schlauer.
Nach mehrmaligem Lesen bin ich nun doch schlauer geworden. Mir stellt sich nur eine einzige Frage: Kann ich anstelle von PIN 6 (GND) auch PIN 14, 20, 25, 30, 34 oder 39 verwenden? PIN 1-12 ist bei mir bereits durch das RemotePi Board belegt.
Das ist kein Problem. Du kannst auch mehrere Anschlüsse an den gleichen GND Pin legen, das ist ganz dir überlassen.
Ich weiß nicht so recht, ob mein Setup korrekt ist, ich habe batocera.linux auf dem Pi4 und über Umwege die benötigten python libs installiert (pip über wheel, rest über piwheels.org via pip; musste für sysv-ipc und rpi-ws281x die armv7 wheels runterladen und umbenennen in *-py3-none-any.whl damit sie installieren gingen). Dann über wget diesen Test gezogen und ausgeführt: https://raw.githubusercontent.com/adafruit/Adafruit_CircuitPython_WS2801/main/examples/ws2801_simpletest.py Leider tut sich nichts. Lichter bleiben dunkel. Ich weiß nun nicht, ob irgendetwas an meinem Setup evtl. verkehrt ist oder ob ein Hardwaredefekt vorliegt (LEDs, Power Jack Adapter sowie Netzteil sind heute erst per DHL angekommen). Hier mal ein paar Bilder: https://imgur.com/a/g1MwryN
Ja, Netzteil ist defekt.
würde gerne wissen wie das mit 12V LEDs ist, denn ich habe den WS 2815 und ob ein Raspberry 1B+ auch funktioniert weil die 3 und 4 ja zurzeit einfach nicht verfügbar sind?
danke und LG
https://elementtutorials.com/tools/hex-color-picker.html
Hallo,
habe mich gerade neu in dieses Thema eingelesen, und erfolgreich mit einem WS2801 getestet.
Jetzt möchte ich einen 2 SPI port (Bus) am Raspberry PI 4 einrichten.
Hatte hier was von PIN 38 und 40 gelesen.
Wie kann ich diese PIN im Raspberry Pi zuweisen?
Kann mir da jemand helfen?
Hat sich erledigt.
Habe es hin bekommen. 🙂
# Code
import time
import RPi.GPIO as GPIO
import Adafruit_WS2801
import Adafruit_GPIO.SPI as SPI
PIXEL_COUNT_0 = 160
PIXEL_COUNT_1 = 160
SPI_PORT_0 = 0
SPI_DEVICE_0 = 0
stripe_1 = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT_0, spi=SPI.SpiDev(SPI_PORT_0, SPI_DEVICE_0), gpio=GPIO)
SPI_PORT_1 = 1
SPI_DEVICE_1 = 0
stripe_2 = Adafruit_WS2801.WS2801Pixels(PIXEL_COUNT_1, spi=SPI.SpiDev(SPI_PORT_1, SPI_DEVICE_1), gpio=GPIO)
Falls es noch jemand benötigt. 🙂
Schönen guten Tag,
ich habe hier noch ein WS2801 liegen und gesehen, das mein Motherboard eine Unterstützung für Adressierbare RGB Streifen hat, genauer gesagt JRAINBOW mit 3 Pins: +5V , Data und Ground, wie es bei einem WS2812B zu finden ist.
Gibt es irgend eine Möglichkeit, den WS2801 mit seinen 4 Pins dort anzuschließen?
Einen Converter oder ähnliches? Google will mir dabei nicht helfen 🙁
Besten Dank‘ im Voraus!