Sie sind nicht angemeldet.

[DIY arduino] WS2812B Steuerung

Lieber Besucher, herzlich willkommen bei: We-Mod-It | Das Forum von Moddern für Modder. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Socke

Lebt hier!

  • »Socke« ist der Autor dieses Themas

Beiträge: 1 037

Registrierungsdatum: 23. März 2014

Beruf: Service Techniker / Elektroniker für Geräte und Systeme

Danksagungen: 44

  • Nachricht senden

1

Donnerstag, 1. Dezember 2016, 21:44

WS2812B Steuerung

Hallo WMI,

nach langer Zeit starte ich auch mal wieder ein Projekt, wobei starten nicht ganz richtig ist die Umsetzung ist schon voll im Gange.
Einen ausführlichen Worklog diesbezüglich werde ich die Tage starten.
Bei meinem Projekt werden WS2812B LEDs erwendet welche in Blöcke eingeteilt und anschließend per Arduino gesteuert werden sollen.
Vorgabe für die Steuerung z.B. unterschiedliche Farben oder Helligkeiten pro Block.
Hierzu eine kleine schematische Übersicht.



Kommen wir nun zu meinem Problem wo ich gerade hänge :dash:
In meinem Kopf sind zwei Varianten für die Umsetzung, bei denen ich allerdings noch nicht weis wie ich diese programmiertechnisch realisieren kann.

Variante 1:

Block 1 besteht aus 20LEDs
Block 2 besteht aus 10LEDs
Block 3 hat wieder 20LEDs

nun möchte ich diese dem Arduino als eine LED pro Block verkaufen.
Somit hätte ich dann Praktisch nur 3 LEDs in meinem Arduino Sketch zur auswahl.
Hardware mäßig könnte ich das Lösen in dem ich alle LEDs in einem Block Paralell anschließe was
aber einen imensen Lötaufwand bedeuten würde deshalb wäre es schön dies
per Programmierung zu lösen.

Variante 2:

Block 1 besteht aus 20LEDs
Block 2 besteht aus 10LEDs
Block 3 hat wieder 20LEDs

Wieder die gleiche LED konstellation wie bei Variante 1.
Bei der Programmierung werden die LEDs nicht in Blöcken betrachtet sondern wieder als ein LED-Stripe
und ich Sage dann einfach LED 1-20 = Rot, LED 21-30 = Blau usw


Ich hoffe mir kann hier jemand helfen und hat evtl einen Lösungsansatz jeder Tipp kann hilfreich sein.
Hab mir auch schon die Demoprogramme von der Adafruit Lib und FastLED Lib reingezogen was mich aber nicht weiter gebracht hat.
Über Google bin ich auch noch nicht fündig geworden vielleicht suche ich auch einfach nur mit den Falschen worten... :wacko:

Wie gesagt ich bin für jeden Tipp dankbar :thumbsup:

Mavericklp

Fühlt sich wohl hier

Beiträge: 215

Registrierungsdatum: 31. Januar 2012

Wohnort: Weißenthurm

Beruf: Fachinformatiker Fachrichtung Systemintegration

Danksagungen: 7

  • Nachricht senden

2

Donnerstag, 1. Dezember 2016, 23:41

Einfachste Möglichkeit ist Variante 2... weil dabei hast du die meisten möglichkeiten..

Ich habe einfach mehrdimensionale Arrays erstellt..
array {(nr.block); (nr.led)}

White block=Nummer
White i <array anzahl
Array schalten

Ich hoffe du verstehst den denk anstos... ansonsten melden dich morgen mal bei mir..

Scynd

1. Platz Enermax Casecon Contest

Beiträge: 924

Registrierungsdatum: 12. März 2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 74

  • Nachricht senden

3

Dienstag, 6. Dezember 2016, 23:06

Ich fange übrigens auch gerade an mich mit WS2812B Leds rum zu spielen. Allerdings "nur" mit ein 16 Pixel Ring. Ich benutze aktuell die FasLed Library ;)
Ich würde auch Variante 2 nehmen.

Gruß Scynd


Joker

Lebt hier!

Beiträge: 1 271

Registrierungsdatum: 21. Februar 2012

Wohnort: Nürnberg

Beruf: Code-Künstler

Danksagungen: 34

  • Nachricht senden

4

Dienstag, 28. Februar 2017, 07:56

Hm lebt das Projekt noch? :D

Naja da ich ja jetzt auch einige Erfahrung mit dem 2812B LEDs gesammelt habe, schreib ich mal was dazu.

Also ich würde definitiv Variante 2 nehmen, und alles andere über den Programmcode lösen.

Je nachdem wie sich die Anzeige Verhalten soll (was genau soll das eigentlich werden?) gäbe es noch die Variante, dass man die zwei gleich großen Blöcke parallel anschließt, also quasi voneinander getrennt am selben Datenpin. Dann zeigen die beiden natürlich immer genau dasselbe an.

Was auch geht, sind komplett getrennte Instanzen, also z.B. mit der Neopixel library:

Quellcode

1
2
3
Adafruit_NeoPixel strip_1 = Adafruit_NeoPixel(20, 4); // 20 leds am pin 4
Adafruit_NeoPixel strip_2 = Adafruit_NeoPixel(10, 5); // 10 leds am pin 5
Adafruit_NeoPixel strip_3 = Adafruit_NeoPixel(20, 6); // 20 leds am pin 6


Dann kann man die drei Instanzen völlig unabhängig voneinander ansteuern.
Ich kann mir billiges Werkzeug nicht leisten!!!
Mein Hausumbau-Thread
Mein Werkstattumbau-Thread

Socke

Lebt hier!

  • »Socke« ist der Autor dieses Themas

Beiträge: 1 037

Registrierungsdatum: 23. März 2014

Beruf: Service Techniker / Elektroniker für Geräte und Systeme

Danksagungen: 44

  • Nachricht senden

5

Dienstag, 28. Februar 2017, 12:24

Logisch! Das Projekt ist sogar schon fertig seit 17.12.16

Allerdings hat meine Zeit aus privaten Gründen bis dahin noch nicht wirklich ausgerreicht das Ganze als Worklog zu verpacken...

Mittlerweile kann ich auch ganz gut mit den Strips umgehen was die Ansteuerung angeht
Danke dir trotzdem für deinen Hinweis :)