Wenn es kein Zeitproblem gibt dann einfach alle WS2811 LED in Reihe schalten.
Der 4051 bze 4067 ist wie ein Stufenschalter mit 8 bzw 16 Schalterstellungen. Der gemeinsame Pol wird auf einen der 8 bzw 16 Kontakte geschalten. Die Flußrichtung kann in beide Richtungen erfolgen. Beim 4051 bzw 4067 erfolgt die Auswahl des "Ausganges"
über eine 3 bzw 4 Bit Zahl.
Du wählst den Ausgang aus und schickst die Daten an den LED-Strang der an diesem Ausgang hängt. Damit die anderen "Ausgänge" einen definierten Pegel haben schaltest Du einen Pullupwiderstand an. So bekommen die Eingänge der nicht geschaltenen WS2811 keine Störsignale.
Naja, Eisebaer hat schon recht.
Wenn er mehrere "Einheiten" oder Räume beschicken will, sollte er nicht alle LED mitlaufen lassen, sonst frisst sich der Stromvorteil irgendwann auf.
Aber Multiplexen sollte gehen, im einfachsten Fall über eine Interruptroutine im Arduino?
Also den Ausgabepin auf einen InterruptPin legen, den Interrupt auslesen und mittels einer Variable direkt an einem anderen Port wieder ausgeben lassen?
Also mal schematisch so gedacht:
define AusgabePin 0; //irgenein Port, der Interruptfähig ist
byte Channel = 0; // Variable für späteren Ausgabeport
setup() {
}
loop() {
=> Ausgabe definieren, Channel mit Wert belegen
=> mit fastspi auf AusgabePin ausgeben
}
interrupthandler() {
Wenn Interrupt an Port AusgabePin, dann AusgabePin lesen und direkt an Channel wieder ausgeben;
}
Wäre das ein denkbarer Ansatz? Die Idee mit dem AusgabePin, der gleichzeitig wieder Interrupt-Eingang ist, habe ich aus einem DCF77-Filter-Projekt (auch hier im Forum) entliehen.
interessante idee, dirk, aber die lösung von uwe ist ja herrlich einfach. ich werd' mir ein paar von den 4067ern besorgen und ausprobieren. bis zum "richtigen einsatz dauert es sowieso noch, frühestens im herbst bau ich die wohnung um.
was mich abschreckt, statt weissen LEDs farbige zu nehmen, ist der geschätzt doppelt so hohe stromverbrauch. und seien wir ehrlich, die zeit, wo man farbige lampen in der wohnung haben will, hab' ich hinter mir.
wär halt nur nett, weil's geht. darüber muß ich noch nachdenken.
Hallo an alle
Heute habe ich meinen WS2812 LED-Streifen bekommen. Am 28. Jan in Deutschland abgeschickt, am 7. Feb hat der Postbote versucht das Einschreiben abzugeben, aber ich als arbeitssamer Single war am Unsinnigen Donnerstag Schlittenfahren (kann Euch sagen 30 km roden sind viel. Geht in die Beine das runterfahren. Rauf mit Seilbahn 8) )
Am 8. abens Benachrichigung gefunden und heute abgeholt. Gleich Kabel mit Stecker angelötet.
Erste Zweifel bei der fastSPI Library; welchen Chipsatz muß ich auswählen? Was hast Du Stefan genommen?
den strip anschließen, im beispielsketch die anzahl der leds angeben und bei der auswahl des chipsets
FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801); auswählen und ausbessern auf:
FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2811);
ich habe letztens beim Arduino Open Space bei uns in Dresden ein paar Sachen gesehen, die ein paar Leute mit den WS2812 LEDs angestellt haben. Es waren 2 Arrys dabei. Einer hatte Stripeabschnitte als Matrix verschaltet. Die Datenleitungen linear, also quasi zickzack und Die Versorgungsspannung E-förmig in die Stripes eingespeist, so das die Stücke parallel geschaltet sind.
Ein 5V 30A Netzteil lief permanent an der "Kotzgrenze"
Das Ganze hat er mit der Glediator-Software gefüttert. Sieht jedenfalls gigantisch aus. Am brilliantesten sehen Streifen mit Siliconbeschichtung aus. Das sieht wie eine Lackierung aus. Werde mir bei Gelegenheit auch mal welche bestellen
frage an uwe:
ich hab' eine bibliothek gefunden, die diese streifen mit 8MHz ansteuern kann, habe aber keine möglichkeit (chip), das hier auszuprobieren. hast Du sowas herumliegen?
ich baue gerade für einen freund so einen streifen mit atmega328P und quarz auf 16MHZ. wär praktisch, diesen quarz nicht verbauen zu müssen. muß mir gleich attiny85er bestellen, nur blöd, daß guloshop nicht nach ö liefert.
wenn ich diese biblothek richtig verstehe, kann man auch bis zu 8 streifen unabhängig ansteuern. ist zwar momentan nicht mehr interessant, die idee von oben hab' ich verworfen, aber prinzipiell natürlich paktisch.
frage an uwe:
ich hab' eine bibliothek gefunden, die diese streifen mit 8MHz ansteuern kann, habe aber keine möglichkeit (chip), das hier auszuprobieren. hast Du sowas herumliegen?
ich baue gerade für einen freund so einen streifen mit atmega328P und quarz auf 16MHZ. wär praktisch, diesen quarz nicht verbauen zu müssen. muß mir gleich attiny85er bestellen, nur blöd, daß guloshop nicht nach ö liefert.
gruß stefan
Hallo Stefan.
Soweit ich das Datenblatt studiert habe, gibt es 2 Betriebsmodi beim 2811 wobei beim 2812 nur der langsamere möglich ist da das Pin zur auswahl nicht herausgeführt ist und fix verschaltet ist.
When the refresh rate is 30fps, low speedmodelc
ascade number are not less than 512 points, high
speed mode not less than1024 points.
Send data at speeds of up to 400 Kbps and 800
Kbps two patterns
Ein Bit ist immer 2,5µS bzw 1,25µS lang. Da Verhältnis im langsamen Modus von H zu L ist für ein 1-Bit 0,5 zu 2,0 und für ein 0-Bit 1,2 zu 1,3µS. Alle Zeiten auf eine Genauigkeit von 0,15µS.
Da kann ich mir nicht vorstellen wie den WS2811/12 schneller ansteuern zu können.
ich hab' eine bibliothek gefunden, die diese streifen mit 8MHz ansteuern kann,
Ähm, wenn der PIN nicht herausgeführt ist und fix verschaltet, dann gehen nur die 800 kbaud, oder?
Und ob der uC mit 8 oder 16 MHz läuft dürfte doch nur für das Timing spannend werden, arbeiten die Bibliotheken mit Zeiten oder Taktzyklen?
Bei ersterem sollte der Takt doch egal sein?
Nur wie empfindlich gegen Taktschwankungen ist das Ganze, wenn man einen ATTiny mit internem Takt fährt?
Wollte auch testen, bin noch nicht zum bestellen gekommen ...
ich wußte nicht, ob's Dich interessiert, und ich muß da noch was dazu erklären.
erstmal: http://rurandom.org/justintime/index.php?title=Controlling_WS2811_led_strings_at_800kbit/s_without_external_oscillator
hab die ws2811_8.h-datei in die libraries gelegt und in einem leeren sketch includiert.
fehlermeldung: no _delay_us declared in this scope oder so ähnlich. diese funktion hab ich in einer delay.h im arduino-verzeichnis gefunden (gibt 2). die delay.h ins sketch-verzeichnis gelegt und auch includiert (mit " -zeichen). jetzt läßt es sich kompilieren, aber wie gesagt, kein chip zur hand. außerdem muß ich mir noch ansehen, ob dieses struct CRGB dort genauso funkt wie in der fast_SPI.
dischneider:
Ähm, wenn der PIN nicht herausgeführt ist und fix verschaltet, dann gehen nur die 800 kbaud, oder?
Und ob der uC mit 8 oder 16 MHz läuft dürfte doch nur für das Timing spannend werden, arbeiten die Bibliotheken mit Zeiten oder Taktzyklen?
Bei ersterem sollte der Takt doch egal sein?
Nur wie empfindlich gegen Taktschwankungen ist das Ganze, wenn man einen ATTiny mit internem Takt fährt?
Wollte auch testen, bin noch nicht zum bestellen gekommen ...
Liebe Grüße
Dirk
Ich glaube mich zu erinnern daß es 400kBaud sind.
Grüße Uwe
ich wußte nicht, ob's Dich interessiert, und ich muß da noch was dazu erklären.
erstmal: Driving the WS2811 at 800 kHz with an 8 MHz AVR - Just in Time
hab die ws2811_8.h-datei in die libraries gelegt und in einem leeren sketch includiert.
fehlermeldung: no _delay_us declared in this scope oder so ähnlich. diese funktion hab ich in einer delay.h im arduino-verzeichnis gefunden (gibt 2). die delay.h ins sketch-verzeichnis gelegt und auch includiert (mit " -zeichen). jetzt läßt es sich kompilieren, aber wie gesagt, kein chip zur hand. außerdem muß ich mir noch ansehen, ob dieses struct CRGB dort genauso funkt wie in der fast_SPI.
gruß stefan
Heute (Nacht) interssiert es mich nicht mehr; nach dem Wochenende geren.
Grüße Uwe