Welche Library ist die richtige ? (WS2812 - Adafruit oder FastLed)

Hallo Gemeinde,

für meine gerade gedruckte "Warpcore-Table-Lamp" habe ich folgende Hardware-Konfiguration:

4 Linsengruppen zu je 5 x 8 Stk. WS2812 und zusätzlich in der Reaktionskammer 2 x 8 Stk. WS2812.

Es sind in der Summe 176 Stk. WS2812 zu befeuern.

Meine Frage ist folgende:
mit welcher Library ist eine freie Gruppierung der LEDs besonders einfach realisierbar um z.B. ein Top-Down Lauflicht (so wie es halt auf der Enterprise in einigen Folgen zu sehen ist) aber auch Rundum-Lichteffekte, wabernde Lichteffekte.

Ich möchte gerne die passende Library einsetzen um nicht (für mich) mühsam in zwei Librarys rumhühnern zu müssen.

Ein paar Worte warum wer welche Library bevorzugt würde meine Entscheidungsfindung beschleunigen.

Wenn jemand zudem noch für beide Librarys eine Funktionsübersicht mit Beispielen anbieten kann... wäre super.

schon mal Dank für Infos und Einschätzungen

Luclass

Hi

Ich wüsste nicht, daß eine solche Unterteilung in einer Neo-Pixel-Lib bisher gemacht wurde.
Denke, Da musst Du selber Funktionen zu entwerfen, Denen Du übergibst, welche LEDs sich in welchen Gruppen befinden.
Wobei Gruppen von irgend welchen gleichartigen Zahlen riecht förmlich nach Arrays.
Wenn wird's was in der Richtung Dot-Matrix-Anzeige via WS2812 (mit oder ohne B?) geben, wo man die einzelnen Streifen im Code so einstellen kann, daß Diese der Matrix entsprechen - für 4x 8x8er Dot-Matrixen habe ich Gestern mit der Max72xxPanel Library (Beispiel Ticker) rumgespielt - habe Es aus Char-Array umgeschrieben um mehrere Meldungen ausgeben zu können.
Klick

Hast Du ein Video, was für Effekte Dir vorschweben? (aber:Jo, Enterprise kam mir schon Mal unter ... in mehreren Generationen sogar)

MfG

Hi...

danke schon mal für Deine Antwort
OK... da bin ich also gleich im ersten Post voll an die Wand gefahren.

So... zuerst kannst Du hier ein Beispiel sehen was ich mir so vorstelle.
Diese WarpCoreLamp habe ich bereits in einigen Varianten gedruckt gesehen.
Meine hat halt je 2 Linsensätze über und unter der Reaktorkammer.

Gut.. nun zur Motivation zu meiner Frage. Der gute Mann Troy Wuelfing hat diese Effekte auf Linuxbasis erzeugt.
Ich hatte nachdem ich mit den B-Typen des WS2812 einige Beispiele durchspielte, ist bei mir der Verdacht aufgekommen das Farbfading, Rollieren, Lauflicht usw Kommandos sind und halt nur richtig miteinander kombiniert und parametriert werden müssen... das scheint wohl ein Irrtum zu sein...nun bevor die Frage kommt... Ich habe in den Sketches nur die Anzahl meiner LEDS eingetragen sonst aber keine mentale Kraft in das Verstehen dieser Beispielsketches gesteckt um erstmal die Eignung der beiden Librarys für die gewünschten Effekte bei erfahrenen Usern mal abzuklopfen.

Unter einem Array kann ich mir zumindest etwas vorstellen.
Auch einen Matrixbetrieb kann ich mir vorstellen zumal ich hardwareseitig alle Din und Dout zu jedem Modul separat im Zugriff habe.
Ich habe am Rande mal etwas von einer Matrix-Freeware gelesen... hab´s aber aus dem Auge verloren.

Würde mich weiterhin auf Antwort freuen.

LG

Luclass:
Ein paar Worte warum wer welche Library bevorzugt ...

Ich bevorzuge grundsätzlich das Schreiben einer eigenen Bibliothek.

Was Du tun möchtest ist ja nicht so irre aufwendig. Und wenn Du einigermaßen geplant vorgehst, ist das Schreiben einer entsprechenden Bibliothek kein Hexenwerk. Die Vorteile ggü. einer fertigen Bibliothek sind riesig: Du kennst den Code bis aufs letzte Bit, bei einem überschaubaren Funktionsumfang kann die Bibliothek nahezu beliebig klein sein und wenn Du etwas ändern oder erweitern möchtest, bist Du nicht auf andere angewiesen.

Und wenn Du Hilfe benötigst, bist Du hier bestens aufgehoben :slight_smile:

Gruß

Gregor

PS: Ein Beispiel für eine sehr einfache Bibliothek findest Du hier.

Moin,

Ich hab mir mal das Beispiel Video bis zum Ende angesehen.
Sieht deine Lampe genau so aus?
Wie viele Ebenen sind das insgesamt?
Wie viele LEDs sind das pro Ebene?
Ein paar Fotos davon würden auch weiterhelfen.

Da die Lichteffekte unterschiedliche Bewegungsmuster/-richtungen haben ist eine Gruppierung eher hinderlich.
Ich würde die LEDs einfach alle in einer Reihe zu einem Strang zusammenfassen und die Effekte nur durch die Programmierung machen. Dann bist du auch später für neue Ideen flexibler.
Die Lichteffekte selber zu programmieren sind kein Problem.
Bedenke, dass du genug Strom brauchst. Für jede LED 60mA. Und das du genügend Einspeisepunkte hast.
Was ich noch nicht abschätzen kann ist, ob die WS2812 schnell genug sind.
Meine 600Stück sind mir für meine Treppenbeleuchtung zu lahm. Ich werde auf APA102 wechseln.
Wenn du so vorgeht, dann kannst du das mit beiden Libraries machen. Der Code wird gar nicht großartig unterschiedlich aussehen. Du kannst das ja mal mit beiden probieren und schauen welche schneller läuft. Ich schätze mal die Fastled.

Lieben Gruß,
Chris

Moin Gregor & Chris,

ich gehe erstmal auf Chris ein:
Hier kannst Du das Modell sehen und ich habe nur ein zusätzliches "Michelinmännchen" unter der Reaktorkammer plaziert. Im Gegensatz zum Autor der Lampe wollte ich nicht nur ein paar "Regensimulator-Sticks" reinfummeln, sondern wollte doch mehr Effekte was aber mit dem ursprünglichen Modell nicht geht. Ich habe daraufhin einen LED-Träger gezeichnet und gedruckt. Auf diesen Trägern kann ich 8 Stück WS2812B plazieren und nach dem Stacken von 5 Trägern habe ich 40 LEDs für ein Segment. In der Summe habe ich somit 160 LEDs für die 4 Segmente. Zusätzlich habe ich noch 16 LEDs für die Reaktorkammer vorgesehen... für die muss ich mir nocht etwas zum Fixieren einfallen lassen. Der Strombedarf von etwas weniger als 11A ist mir bewusst.
Vom Speed her habe ich keine Erfahrungswerte da ich mich mir der WS2812B erst sein 3 Wochen beschäftige.

Ich dachte das gerade eine Gruppierung sinnvoll ist, weil ich über meine Konstruktion eine Zeilen- und Spalten- Ansteuerung realisieren könnte. z.B.
Zeile 1 = LED 1-8, Zeile 2 LED 9-16, Zeile 3 17-24 usw.
Spalte 1 = Led 1, 9, 17 usw

Oder denke ich da falsch ?

Gregor...
klingt alles gut... meine Arduino-Kenntnisse sind halt nur extrem bescheiden um nicht zu sagen auf Noob-Niveau, wenn ich hilfe für ein Programm-Gerüst bekommen könnte... wäre ich glücklich.
Ich gehöre nicht zu den Leuten die gebratene Hühner erwarten... aber bin halt doch auf massive Hilfe angewiesen.

Vielleicht schaffe ich es ein paar Fotos zu knipsen.

LG
Luclass

Wenn ich das richtig verstehe, dann hast du pro Ebene 8 LEDs und das in insgesamt 22 Ebenen. Sinnvoll ist jetzt auf jeden Fall noch die erste LED jeder Ebene direkt untereinander anzuordnen. So erreicht man, wenn man jede 8. LED ansteuert eine gerade lotrecht Linie.
Stimmt das?
Lieben Gruß,
Chris

Moin Chris...

ja das hast Du richtig verstanden. Der LED-Träger ist so ausgelegt das ich dort einen 8-LEDs langen Strip aufsetze, dann den nächsten Träger drauf setze und den Dout vom ersten Ring in den Din des zweiten Rings führe.. das soweit bis ich dann ein Segment mit 5 Ebenen fertig habe. Von den Segmenten habe ich dann jeweils den Din und den Dout separat herausgeführt um, so hoffe, ich auch mehr Flexibilität zu haben.

Ich habe darauf geachtet das ich somit bei 0° Winkel immer die erste LED des 8´er Strips unter bzw übereinander zu sitzen habe.

Nachher gibts ein paar Bilder
Versprochen

LG
Luclass

Okay, dann ist das doch perfekt. Du kannst die einzelnen Segmente auch noch verbinden, so dass du nur noch einen zusammenhängenden Streifen zu ansteuern hast. Der Rest geht dann über die Software.
Da fallen mir jetzt zwei Sachen zu ein.
Entweder du programmiert das als XY Matrix, sprich X=8 LEDs und Y=22 Ebenen.
Oder du machst das einfach wie ein gerader Streifen und musst dann etwas mehr in die Logik stecken.
Ich würde sogar sagen die XY Matrix ist genau das richtige für dich.
Die LEDs haben dann X und Y Koordinaten.
So kannst du die LEDs in alle Richtungen einfach laufen lassen.

Schau dir dazu die Matrix Beispiele der FastLED Library an.

Der Rest ist dann eher ein Kinderspiel und die Grenzen setzt dir nur noch deine Fantasie.

Lieben Gruß,
Chris

Luclass:
... meine Arduino-Kenntnisse sind halt nur extrem bescheiden ...

Das macht nichts. Als ich mit den Arduino-Spielen anfing, hatte ich auch keine Ahnung.

Ich bin weiterhin der Ansicht, dass das Schreiben einer eigenen Bibliothek die bessere Lösung ist. Aber wenn es Dir darauf ankommt, in eher kurzer Zeit zu einem brauchbaren Ergebnis zu kommen, hältst Du Dich am besten an das, was Chris schreibt. Das mit der eigenen Bibliothek kannst Du Dir für später aufheben, wenn Du merkst, dass Dir das Spielen Spaß macht. Wenn Du Dich dann wieder hier meldest, bekommst Du ganz sicher sehr kompetente Unterstützung.

Gruß

Gregor

Moin Chris und Gregor,

hier ein Eindruck von meiner Variation der Warp-Core-Lampe:

Der LED-Träger

Der LED-Träger bestückt

Ein Segment

Ein LED-Segment wird in den Linsenteil geschoben

Linsensatz und Segment von oben

Linsensatz und Segment von unten

Die Lampe wird dann mal so aussehen.

Gregor..
wie Du vermutest liegt mir mehr an einem brauchbaren Ergebnis als an schöner Programmierung.
Wie Du weisst gibt es bei den Makern einige die besser Elektronik als proggen können... zu denen gehöre ich...vielleicht auch leider, denn wenn die die alten Hasen mit Aussagen wie "das ist ja ganz einfach" könnte ich eigentlich nur heulen weil ich mir jedes bisschen Wissen hart erkämpfen muss....es fliegt mir leider nicht zu...aber dennoch vielen Dank fürs Mut machen.

Chris....
Von Deiner Beschreibung her...genau das was ich mir vorstellen kann.
Ich habe richtig verstanden das ich im Grunde einen Strip mit den ich virtuell im Matrixmodus X-Y Anspreche. Ich lade mir das Beispiel und schau mal was ich davon verstehe....

Da werden bestimmt neue Fragen entstehen.

Was sollen die Zeilen bedeuten, die auf Bilder hin zu weisen scheinen?

Gruß Tommy

Sorry... da wird wohl meine Unfähigkeit zugeschlagen haben.

Ich habe die "Insert an Image" Funktion versucht, weiss nun aber nicht was ich da falsch gemacht haben könnte.

Ich hab jetzt erstmal die [/img] Einschlüße entfernt, leider ist somit nur ein Copy-Paste zum Aufruf der Bilder nötig.

Vielleicht hat da jemand einen Tipp wie ich hier Fotos reinstricken kann.

LG
Luclass (Thomas)

Luclass:
4 Linsengruppen zu je 5 x 8 Stk. WS2812 und zusätzlich in der Reaktionskammer 2 x 8 Stk. WS2812.

Es sind in der Summe 176 Stk. WS2812 zu befeuern.

ob Fastled oder Adafruit scheint mir für diese Lichteffekte eher Geschmackssache zu sein. Sieh dir die mitgelieferten Beispiele an und lerne damit.

"Fertige Libraries" außer der Hardwareseitigen Ansteuerung wirst du nicht finden, also heißt es selber programmieren.

Weiters würde ich auch einfach alle 176 LEDs durchverbinden.

Deine LEDs liegen dann alle in einer Reihe, also wirst du intensiven Gebrauch von (geschachtelten) for schleifen machen, also sieh dir das genau an. Das Prinzip scheint mir aber einfach,

eine SchleifeA 0-4 für die Gruppen
eine SchleifeB 0-7 für das Schalten einer Gruppe (es scheint ja so, als hätte ein Ring mit 8 LEDs immer eine gemeinsame Farbe).

Was du noch nicht beschrieben hast, wie willst du die einzelnen Muster aktiveren? Taster, Seriell, Zufall nach Strom ein...

Ich würde ja einen NodeMCU nehmen, und eine Oberfläche im Starwars-Design machen so wie im Video und dann als i-Tüpfelchen noch eine Steuerung über Echo od. Alexa

und eine Oberfläche im Starwars-Design machen

Hoffentlich findet das keiner, sonst kann es gewaltig donnern :wink:

Du meinst bestimmt "im Star-Trek" Design.

Das hätte ich übrigens auch gerne für eine andere Geschichte. Gibt's dafür zufällig so was wie ein Software Corporate Design Guide für das Star Trek Design?

Lieben Gruß,
Chris

wie auch immer, CSS gibt's genug Vorschläge/Templates etc: klick

Moin Leute...

Chris... nicht das ich wüsste..
Vielleicht wirst Du auf den reichhaltig vorhandenen Star Trek-Sites dazu etwas finden.
LCARS wird das User-Interface genannt...und es gibt hier sogar eine Oberfläche dazu...Bitte nicht meckern wegen CB... war war Google... grins

Noiasca...

eine SchleifeA 0-4 für die Gruppen
eine SchleifeB 0-7 für das Schalten einer Gruppe (es scheint ja so, als hätte ein Ring mit 8 LEDs immer eine gemeinsame Farbe).

Nein... es soll nicht nur "Top-Down" laufen sondern auch quasi wie ein Rundumlicht (in der letzten Sequenz des Videos zu sehen) arbeiten können.

Mir ist der Gedanke von Chris das in einer Matrix zu lösen sehr sympathisch und ist für mein schmales Wissen was proggen angeht, zumindest vom Bauchgefühl her, eher die Kategorie... ist vielleicht machbar.

Was ist ein NodeMCU ??

LG
Thomas

Was du noch nicht beschrieben hast, wie willst du die einzelnen Muster aktiveren? Taster, Seriell, Zufall nach Strom ein...

Das soll sowohl im Automatikmodus also auch auf Taste gehen... ich würde gerne auch die Effektgeschwindkigkeit per Taste setzen

konkret genau?
eine Taste für Modus umschalten
eine Taste für Geschwindigkeit?

oder wie hast du dir das vorgestellt.

Übrigens: programmieren beginnt mit einem karierten Blatt Papier!

NodeMCU (oder WEMOS D1) ist ein anfängerfreundlicher ESP8266 ...

und ein letzter Edit: auch bei er Organisation über eine Matrix wirst du For Loops brauchen :wink:

Nächster Schritt imho:
Eine Zeichnung der Abschnitte und deren LED-Nummern
Eine Beschreibung der Muster die du gern hättest

Noiasca...

nun... ich beginne je gerade mich in das Thema einzuarbeiten.
Wohlgemerkt bitte mein Können liegt in der Größenordnung LED an und LED aus.

Vorstellen kann ich mir eine Steuerung mit 4 Tasten welche folgende Funktionen haben könnten:

2 Tasten für die Geschwindigkeit (+ und -)
1 Taste für Automatik ein und alles was bis dahin an Effekten besteht wird gemütlich runtergespult
1 Taste für manuellen Betrieb und je Tastendruck wird einen Effekt weitergeschaltet.

so zumindest der Plan...
Nun... zuerst brauche ich aber eine funktionierende LED-Steuerung und da schaue ich mit das Matrix-Beispiel zur FASTLed Library an

LG
Thomas

Moin,

Step by Step!
Fang mal erst mal nur mit den LEDs an und lass die Tasten und die unterschiedlichen Geschwindigkeiten weg.

Viel Erfolg!

Danach geht es dann weiter mit den einzelnen Sequenzen und wie man die aufruft.

Aber erst mal muss du die Lampen an kriegen :wink:

Lieben Gruß,
Chris