testbericht zum WS2812

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.

Grüße Uwe

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.

Liebe Grüße

Dirk

hi,

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.

danke und gruß
stefan

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?

Anderes Beispiel gesucht, gefunden noch andere Bibliothek herutergeladen:
Hab mal nach FastSPI LED Effects [UPDATED TO WORK WITH FastSPI_2] » funkboxing probiert.
Ängstlich mal nur 10 LED angesteuert, weil ich nicht weiß wieviel die USB verträgt.

Funktionier, Blinkt hypnotisch.
Morgen weitermachen.
Grüße Uwe

hi, uwe,

seltsam, daß das so lange gedauert hat bei Dir...

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);

hat auf anhieb funktioniert.

gruß stefan

seltsam, daß das so lange gedauert hat bei Dir...

Was soll ich Dir sagen: Italien.

Danke Stefan.
Auf die Idee von WS2801 auf WS2811 auszubesser wäre ich nie gekommen.
Grüße Uwe

hi, uwe,

Auf die Idee von WS2801 auf WS2811 auszubesser wäre ich nie gekommen.

in der bibliothek ist WS2811 definiert, nur im beispielsketch haben sie drauf vergessen...

gruß stefan

Ja, die Bibiothek hab ich mir auch nicht genau angeschaut.
Grüße Uwe

Aber manchmal hilft lesen, Eisebaer hat das schon im ersten Post dieses Threads geschrieben :slight_smile:

LG
Dirk

Hallo,

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" :slight_smile:
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 :smiley:

Gruß Gerald

dischneider:
Aber manchmal hilft lesen, Eisebaer hat das schon im ersten Post dieses Threads geschrieben :slight_smile:
LG
Dirk

Ihr habt mich ertappt.
(hoffentlich war das ein Teil meiner 0,36733% Fehlerrate :wink: :wink: :wink: )
Grüße Uwe

hi,

kein problem, uwe, das war kein fehler, sondern eine unachtsamkeit. nachdem ich nicht Deine frau bin, wird das einfach übergangen...

gruß stefan

hi,

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

noch eingefallen:

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.

noch ein gruß, noch ein stefan

Eisebaer:
hi,

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,

Welche Bibiothek ist das?

Grüße Uwe

Ä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

hi, uwe,

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.

gruß stefan

jetzt wo ich's nochmal lese, uwe. ich meinte einen 8MHz chip verwenden, die Ansteuerung muß natürlich gleich schnell bleiben.

gruß stefan

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

Eisebaer:
hi, 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