RGB-24-bit LED Ring WS2812 5050 am Arduino


#1

Hallo zusammen,

Weiß jemand, wie ich einen 24 bit WS2812 LED Ring am Arduino verkabeln und im Sketch einbinden muss? Die PutnPlay Cube verwendet ja auch so einen. Ich würde das nur gerne in Torstens Code integrieren.
Hudimentäre C# Programmierung kann ich wohl, kenne mich aber mit dem Arduino nicht wirklich aus. Leider!


#2

Schau dir mal die Beispiele zu dieser Library an. Bedenke aber den zusätzlichen Stromverbrauch. Je nachdem wieviele LEDs der Ring hat und wie hell du die LEDs schaltest, kannst du das nicht einfach über USB betreiben, sondern benötigst eine extern Stromquelle die genug A liefert.


#3

Ich habe mir das mal angeschaut, auch den Quellcode von der PutnPlay Cube. Aber da steige ich auf die Schnelle auch nicht durch. Der zeigt ja laut Quellcode sogar den Track anhand der LED an.

Am einfachsten wäre den Ring in verschiedenen Farben einfach kreisen zu lassen, wenn was abgespielt wird.
Naja. Vielleicht irgendwann mal.
Aber Danke !


#4

Hab ich im CubieKid schon experimentell drin. Braucht nur einen Pin (Pin6). Als Basis habe ich die Software von Stephan genommen. Habe bisher eine Batterieanzeige und Nachtlicht am laufen.


#5

Hey. Hast du wohl mehr Infos für mich, wie ich das in den Code von Thorsten integrieren kann? Leider kenne ich mich mit dem Arduino zu wenig aus.
Von den großen LED Ringen habe ich 2 rum liegen.

Was für eine Sprache ist das eigentlich beim Arduino? (duck)


#6

Wird es in meiner Firmware erstmal nicht geben. Ich habe damit experimentiert und wenn man den LED Stripe wirklich oft updated (für Animationen nötig) hatte ich Probleme mit dem Timing. Ausserdem deaktiviert die FastLED Library intern irgendwelche Interrupts, so das (zumindest bei mir) der NFC Leser nicht mehr zufällig funktioniert hat. Dazu kommt, das die FastLED Library relativ groß ist und man sich auch Gedanken um die Stromversorgung machen muss wenn man so viele LEDs betreibt. Daher hab ich das für mich erstmal verworfen.


#7

Hmm. OK. Die Stromversorgung kommt ja direkt vom Batterie Shield v3. Solange man die Helligkeit nicht voll aufdreht, sollte da doch nicht allzuviel fließen.
Ich dachte da an die folgende Library “WS2812FX” mit " Adafruit NeoPixel".

Die Sprache ist ja quasi C++. Ich schaue mir das mal an. Damit lassen sich ja schon tolle Ideen umsetzen.


#8

Ich hab mit der WS2812FX schon was gemacht. Schon bei den kleinsten Sketch mit der Library sind >70% des Programmspeichers belegt. Es kommt also der von stephan erwähnte Punkt mit der Library größe wieder zum Tragen. Ggf. könnte man die Library noch abspecken und unnötige Effekte die man nicht benötigt raus schmeißen.

Ich habe Spaßeshalber versucht einfach nur eine Initialisierung von WS2812FX zum Tonuino Sketch hinzu zu fügen.

#include <WS2812FX.h>
#define LED_COUNT 1
#define LED_PIN 11
WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);

Ergebnis:
Der Sketch verwendet 35030 Bytes (114%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.


#9

Mit der FastLED Library würde es gehen die LEDs grundsätzlich anzusprechen (da kommen halt nich 50 fertige Animationen mit), aber alles was ich oben geschrieben habe gilt weiterhin.


#10

Ohje. Das mit dem Speicherplatz ist ja ärgerlich. Ich muss mir das trotzdem mal anschauen. Es reizt mich zu sehr.


#11

Mit welcher Version der Library hast du das probiert? Die sind ja von Version zu Version unterschiedlich groß. Ich habe da noch Hoffnung. Eventuell wie Stephan schon sagt, die Library abspecken (wenn das einfach geht)


#12

Das ist ein guter Post,hab das Ding auch (den 16Bit) und hab auch schon herum probiert…neopixel oder fastled gehen von der Größe.Bis jetzt läuft es, dass ich ne Karte auflege und der Ring wird zum Lauflicht…Nur schaffe ich es nicht die Farbe zu ändern, oder sonst eine Änderung einzuleiten weil ich es nicht schaffe sowohl das Anfragen der Karte als auch das Ausführen des Led-Rings gleichzeitig zu machen. Ich lege ne Karte auf und der Ring wechselt die Farbe,stoppt und erst dann startet die Wiedergabe…


#13

Ich habe es gestern mit Version 1.1.3 geetestet.


#14

@matznis kannst du mir wohl mal deinen Sketch zur Verfügung stellen? Dann würde ich mir das heute Abend mal anschauen.
Danke!


#15

Super, wenn ich zu hause bin schreib ich dir.


#16

Nachdem ich mich mit dem Problem der LED Beleuchtung, also genauer gesagt, mit der Ansteuerung einer WS2812 LED auseinander gesetzt habe, muss ich leider genau die Probleme feststellen, die Stephan schon beschrieben hat.
Sobald man eine Animation abspielt (z.B. per Ardafruit NeoPixel oder FastLED) werden Interrupts deaktiviert. Somit lassen sich währenddessen keine Inputs (Buttons betätigen / RFID lesen). Sobald die Animation (Ansteuerung/Update der LEDs) abgeschlossen ist, funktioniert wieder alles an Inputs. Die LEDs behalten dann den letzten angesteuerten Stand bei.
Das Phänomen hat matznis ja leider auch.

Das Problem mit den Interrupts wird auch häufig im Netz beschrieben. Z.B. hier https://github.com/FastLED/FastLED/wiki/Interrupt-problems

Ich steige nur noch nicht durch, wie die Putn Play Cube das mit der Animation der LEDs schafft und dennoch alle Inputs zeitgleich funktionieren.
Hat da jemand noch eine Idee? Dort wird ja die zu große WS2812FX Library verwendet.

Hier ist auch noch Lesestoff:


#17

Ich bin ein gutes Stück weiter und wollte euch teilhaben lassen. Somit halte ich mal fest:
Die Ardafruit Neopixel Library führt ihre Animationen aus. Währenddessen ist der Arduino für nichts anderes zu gebrauchen. Er reagiert also nicht auf Inputs (Tasten, Karte aufgelegt etc.). Somit höchstens für eine Startanimation z.B. eim Einschalten zu gebrauchen oder als Bestätigung für eine abgeschlossen registrierte Karte.
Dafür gibt es aber auch eine technische Lösung: entweder einen 2. Arduino der die LEDs per Ardafruit ansteuert oder diese zusätzliche Hardware.
https://www.led-genial.de/DIGI-DOT-Booster-WS2812-und-SK6812-ueber-SPI-Schnittstelle-ansteuern

Lassen wir nun die Ardafruit Library außen vor und nutzen die FastLED Library. Bei dieser hatte ich nach einem bißchen Umbau keine Probleme mehr. Der LED Ring wird animiert und der Arduino reagiert weiterhin auf Inputs.
Der Aufbau ist so, dass die LED nur in jedem Loop einmal angesteuert wird und es dann im restlichen Sketch weiter geht. Da ist nämlich der große Unterschied zur Ardafruit Library.

Sobald ich den Sketch quasi fertig gestellt und den Code aufgeräumt habe, lasse ich euch daran teilhaben.

Aktueller Stand ist jetzt. Beim Einschalten der Box habe ich eine Animation der Ardafruit Library. (RainbowCycle)
Danach wird eine Animation der FastLED Library abgespielt. (Rainbow)

Wunsch ist jetzt, dass die Box an verschiedenen Stellen durch den Ring ein visuelles Feedback zu geben:
Z.B.

  • nach dem Anlernen einer Karte die LEDa aufblitzen zu lassen.
    Beim Stoppen des Abspielens einer MP3, den Ring anzuhalten o.ä.
  • Beim Erhöhen der Lautstärke dieses visuell wiederzugeben etc.
    Das ist jetzt quasi nur noch ein zusammenklimpern von Code.

Weiterhin wünsche ich euch frohe Festtage!


#18

Hört sich schon mal super an. Bin gespannt


#19

Hier ist meine WS2812 LED-Ring Version des TonUINOs. So, wie ihn meine Tochter am 24.12. vom Christkind bekommen hat :slight_smile:

https://pastebin.com/0cbqKtUk

Kurze Erläuterung dazu:
Die Startlautstärke steht auf 8.
Maximale Lautstärke auf 19 und minimale Lautstärke auf 1.
Laustärkereglung ist mit delay´s “sanfter”, also langsamer.

Der LED-Ring wird beim Einschalten einmal kurz mit dem Regenbogen-Kreis animiert.
Danach wartet die Box auf Eingaben und der Ring leuchtet komplett mit leichter Helligkeit in lila. (Die Box selbst ist auch lila! Daher passt mir das ganz gut.)
In dieser Farbe leuchtet der Ring immer, wenn keine MP3 abgespielt wird. (Daran kann man schnell erkennen, ob die Box noch eingeschaltet ist oder nicht.)

Wenn MP3s abgespielt werden, gibt es, je nach Abspielmodus, verschiedene Animationen von der FastLED-Library.
(Mit der Anination juggle hatte ich die gleichen Probleme, wie Stephan und Matznis auch. Die Box reagiert dann sehr unzuverlässig auf Inputs. Das Problem besteht aber bei den anderen Animationen von FastLED nicht.)

Bitte bedenkt bei dem Ganzen: Ich bin kein Entwickler und habe das letzte mal vor gut 6 Jahren hobbymäßig in C# programmiert. Ich brauchte also meine Zeit, um überhaupt wieder was zusammen zu bekommen. Daher gibt es codemäßig bestimmt bessere Lösungen, als z.B. mit delay´s zu arbeiten. Aber es funktioniert ja… :smiley:


#20

Irgendwie gibt es aber einen Fehler:
Im Party Modus wird immer nur zufällig eine Datei abgespielt und dann ist Ende. Ist das normal? Das sollte ja eigentlich nur beim Hörspielmodus so sein.
LG