Ich versuche seit Wochen eine programmierbare Weihnachtsbeleuchtung für mehrere 1000 Stk. WS2811 zu erstellen.
Leider scheitere ich kläglich am verfügbaren Speicher.
Ich suche eine Lösung wie ich besser mit dem geringen Speicher umgehen kann oder einen komplett anderen Ansatz wie ich das Problem lösen kann. Im Anhang mein Lösungsansatz der mit 72 LED geht, aber bereits mit 144 LED den Speicher überfüllt.
Was ich will:
Via PC (z.B. seriell), mit der SD Karte oder Ethernet (z.B. mySQL) eigens gestaltete Lichtprogramme ablaufen lassen. Dabei spielt die Geschwindigkeit keine grosse Rolle weil ich keine amerikanische Disco Weihnachtsbeleuchtung will. Es sollen statische Lichtbilder sein, die sich alle paar Minuten ändern. Als Feature sollten die Lichtbilder dann noch sanft überblenden usw.
Das Test Sketch:
Liest sequentiell die test.txt Datei von der SD Karte aus. Drei Stellen ergeben jeweils einen Farbcode. Dieser wird über das rotRGB, gruenRGB und blauRGB in eine Farbe aufgeschlüsselt. Danach werden die nächsten drei Stellen gelesen, welche den Farbcode für den nächsten Pixel bedeuten.
Bei NUM_LEDS definiere ich wie viele LED Pixel ein Lichtbild hat. Nach dieser Anzahl wird das LED Bild aufgeschaltet und das nächste wird ausgelesen. Etwas schwierig zum beschreiben. Ich hoffe ihr versteht es trotzdem
Mein Problem:
Ich vermute, dass die FastSPI_LED2 Library jeden Pixelzustand in ein Array speichert und dann zum Zeitpunkt x mit FastLED.show(); scharf schaltet. Ein Array frisst aber massenhaft Speicher.
Habe auch ein Testprogramm mit mySQL programmiert. Da fällt die SD Library weg. Funktioniert auch, aber sobald ich über 200 Pixel nehme ist der Speicher wieder voll.
Lösungsansätze?
Statt ein Arduino Ethernet ein Ardunio Mega nehmen? Hat zwar mehr Speicher, aber ich möchte bis zu 6000 LED ansteuern können. (PS: Probierte Intel Galileo, da läuft ausser "Blink" leider gar nichts)
Kann man die FastSPI_LED2 so umschreiben, dass die LED direkt aus der mySQL Datenbank angesteuert werden statt in einem Array zwischen zu speichern? Oder habe ich dann ein Zeitproblem?
Gibt es einen komplett anderen Ansatz um das zu lösen?
Was ich nicht verstehe:
Mit der FastSPI_LED2 Library kann ich durchaus eine Matrix mit 1020 LED ansteuern: Siehe Bsp. led_1020_zufall.ino. Ist das weil es keine weiteren Librarys enthält?
Vielleicht kann jemand meinen Prototypen auf einem Mega ausprobieren und die NUM_LEDS hoch schrauben?
Wäre riesig froh um Unterstützung da ich schon sehr am verzweifeln bin. Danke.
NACHTRAG: Dank grosser Unterstützung hier im Forum bin ich schon sehr weit voran gekommen!
In meinem Blog berichte ich sporadisch über die Projektfortschritte: http://www.technikfreak.ch/?s=weihnachtsbeleuchtung
NACHTRAG 2 (Okt. 2016) - Lösungsbeschreibung komplett
Digitale Weihnachtsbeleuchtung selbst programmiert - Teil 1
Digitale Weihnachtsbeleuchtung selbst programmiert - Teil 2
Digitale Weihnachtsbeleuchtung selbst programmiert - Teil 3
serial_rgb_006.ino (4.61 KB)
test.txt (163 KB)
led_1020_zufall.ino (829 Bytes)