Hi,
ich habe vorhin die Library FastLED (vers. 3.2.6) ganz normal über die Bibliothekverwaltung der Arduino IDE installiert. Komischerweise will sie sich an manchen Stellen nicht includieren lassen.
Wenn ich über #include <FastLED.h> im Hauptprogramm inkludiere, gibt es keine Probleme.
Wenn ich aber eine seperate Header selbst erstell und dort die Bibliothek inkludier bekomme ich eine Fehlermeldung:
main.ino:
#include "LEDband.h"
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
LEDband.h
#include <FastLED.h>
Fehlermeldung:
In file included from C:\Users\xxx\Documents\Arduino\sketch_may04a\sketch_may04a.ino:1:0:
C:\Users\xxx\AppData\Local\Temp\build211bed4b6a02fb6ac518b9e5604e7e1c.tmp\sketch\LEDband.h:1:21: fatal error: FastLED.h: No such file or directory
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module.
Liegt die FastLED.h wirklich in der globalen Arduino Library, oder in Deiner privaten?
Hmm, müßte eigentlich in beiden Fällen funktionieren?
Welches ist denn die globale Arduino Library? Wohin sollte denn die Bibliotheksverwaltung normalerweise installieren?
Die Bibliothek liegt in einem Unterordner des unter "Voreinstellungen" festgelegten Sketchbook-Speicherort Verzeichnisses. Nämlich genau in: C:\Users\xxx\Documents\Arduino\libraries\FastLED
Ich habs auch mal mit #include "FastLED.h" versucht. Bringt auch nix.
Irgendwie hat man in der Arduino-IDE ja auch garnicht so viele "Stellschrauben" an denen man darauf Einfluss nehmen könnte, um irgendwas verstellt zu haben :-p
Könnte es was bringen wenn ich einfach mal auf die aktuelle Version update? Bin noch bei Arduino 1.6.8. Oder bringt ein solches Update mehr neue Probleme (mit alten Projekten) als dass es löst?
Gruß
Läuft FASTLed überhaupt auf ESP32?
Fehler beim Kompilieren für das Board ESP32 Dev Module.
Lt. Doku nicht. Nur auf dem ESP8266.
Gruß Tommy
Auf Github wird der Support für ESP32 weder explizit bejaht noch verneint. Das Problem ist wohl WiFi, welches durch Interrupts Probleme beim Ansteuern der LEDs verursacht. Aber das ist ein anderes Thema, was mir zwar auch Probleme macht, aber an dieser Stelle nicht Gegenstand sein soll. Ich glaube auch nicht, dass die Library das Problem ist, sondern dass generell was an der IDE faul ist.
Wenn ich alles in einem Sketch lasse, kann ich ein Beispielprogramm der FastLED-Lib auch einwandfrei compilieren und das läuft auch (bis auf die Probleme mit den Wifi-Interrupts, wenn Wifi aus ist, gehts einwandfrei) auf dem ESP32.
Ich hatte zuvor schon ab und zu Probleme mit den includes. Wenn mehrere #includes, auf unterschiedliche Headerdateien verteilt, vorhanden sind, scheint auch die Reihenfolge der includes eine Rolle zu spielen ob der Sketch alle includes findet und kompiliert oder nicht. Irgendwie habe ich allerdings noch kein Muster gefunden, nach welchem das ganze funktioniert. Ich veränder halt die Reihenfolge der Includes und magic es kompiliert auf einmal. 
Ich vermute, dass ich irgendwo in meinem Dateisystem mal aus Versehen einen Arduino-Ordner hin und her geschoben hab und mir dadurch irgendwas zerschossen habe. Vermutlich wird eine Neuinstallation der IDE am Sinnvollsten sein. Ich bin mir nur unsicher ob das nicht nur zu mehr Problemen mit den vorhandenen Programmen führt.
FastLED-Supportet Platforms
Was da nicht drin steht, wird wohl nicht unterstützt.
Probiere es doch einfach erst mal mit einer portablen IDE. Die ist unabhängig von einer installierten IDE.
Gruß Tommy
Hm. Naja... Ich bin davon ausgegangen, dass es zumindest mehr oder weniger funktioniert wenn im repo https://github.com/FastLED/FastLED/tree/master/platforms/esp/32 zumindest als Plattformen der ESP32 geführt wird und unter Issues auch fleißig Probleme mit dem ESP32 supportet werden. Naja egal. Falls einer ne andere Idee hat, wie ich meine WS2812 unter ESP32 trotz WLAN vernünftig zum Laufen bekomme, bin ich übrigens auch dankbar. 
Das hat aber eigentlich nichts mit dem beschriebenen Problem hier zu tun. Nehmen wir eine andere Lib die explizit ESP32 supportet, aber ebenfalls Probleme macht. Bsp:
main.ino
#include <NeoPixelBus.h>
void setup() {}
void loop() {}
erzeugt diesen Fehler:
In file included from C:\Users\xxx\Documents\Arduino\libraries\NeoPixelBus_by_Makuna\src/NeoPixelBus.h:93:0,
from C:\Users\xxx\AppData\Local\Temp\arduino_modified_sketch_794357\sketch_may05c.ino:1:
C:\Users\xxx\Documents\Arduino\libraries\NeoPixelBus_by_Makuna\src/internal/DotStarSpiMethod.h:29:17: fatal error: SPI.h: No such file or directory
compilation terminated.
Dies compiliert hingegen dann einwandfrei:
main.ino
#include <SPI.h>
#include <NeoPixelBus.h>
void setup() {}
void loop() {}
Eine portable IDE? Hmm das klingt in der Tat verlockend. Keine derartigen Probleme mehr. Was für Nachteile hat das denn gegenüber der festinstallierten Version? Wieso installiert man den Kram dann überhaupt?
Svenjamin:
Falls einer ne andere Idee hat, wie ich meine WS2812 unter ESP32 trotz WLAN vernünftig zum Laufen bekomme, bin ich übrigens auch dankbar. 
Der ESP32 hat einen RMT Funktionsmodul, der die Ansteuerung von WS2812 ermöglicht.
z.B. GitHub - MartyMacGyver/ESP32-ws2812-demo: Demo & driver using the RMT peripheral of the ESP32 to control WS2812 RGB LEDs.
Eine Suche nach "ESP32 RMT WS2812" zeigt das als ersten Hit bei mir.
Added: Ist nicht übermäßig kompliziert, ich musste das mal machen um meine SK6812 zum Leuchten zu bringen.
WiFi und WS2812 müssen sich aufgrund der zwei Prozessoren/Kerne überhaupt nicht in die Quere kommen.
Svenjamin:
Eine portable IDE? Hmm das klingt in der Tat verlockend. Keine derartigen Probleme mehr. Was für Nachteile hat das denn gegenüber der festinstallierten Version? Wieso installiert man den Kram dann überhaupt?
Weil man es nicht besser weiß?
Ich benutze set Jahren nur noch portable IDE. Ein weiterer Vorteil ist, man davon mehrere haben (neue Versionen testen usw.)
Gruß Tommy
Whandall:
Der ESP32 hat einen RMT Funktionsmodul, der die Ansteuerung von WS2812 ermöglicht.
z.B. GitHub - MartyMacGyver/ESP32-ws2812-demo: Demo & driver using the RMT peripheral of the ESP32 to control WS2812 RGB LEDs.
Eine Suche nach "ESP32 RMT WS2812" zeigt das als ersten Hit bei mir.
Added: Ist nicht übermäßig kompliziert, ich musste das mal machen um meine SK6812 zum Leuchten zu bringen.
WiFi und WS2812 müssen sich aufgrund der zwei Prozessoren/Kerne überhaupt nicht in die Quere kommen.
Was es mit diesem RMT auf sich hat, habe ich noch nicht ganz herausgefunden. Scheint eigentlich zum Senden von IR-Signalen zu sein. Warum man das für die Pixel-Ansteuerung verwendet und welche Vor- und Nachteile sich daraus ergeben, erschließt sich mir aus der Dokumentation noch nicht. Gibts dafür ne fertige Bibliothek, welche bereits ne einfache API für Animationen bietet und auf RMT aufsetzt? Darin sehe ich nämlich den größten Vorteil der FastLED-Bib.
Ich hab jetzt 3 Möglichkeiten:
RMT- Welche Vor und Nachteile weiss ich nicht.
FastLED - bietet m.Mn. die komfortabelste API
NeoPixelBus - nutzt Seriell/DMA und ist etwas schneller als FastLED beim Senden. Bietet aber leider auch nicht so ne schöne API
Mittlerweile habe ich sowohl ein Beispiel aus der FastLED-Lib, als auch ein Beispiel aus der NeoPixelBus-Lib zum Laufen bekommen. Sie brauchen allerdings beide recht lange um die Daten auf dem WS2812-Bus zu übertragen: währenddessen ist die CPU beschäftigt. Wenn ich zeitgleich noch ne LED per PWM dimme, dauert das Dimmen 4 mal so lange, als wenn keine WS2812-Animationen im hintergrund laufen habe. Irgendwie wird mein Milli-timing da erst verzögert aufgerufen. Wieso das genau passiert, dem muss ich noch aufn Grund gehen. 
Wie man unabhängig davon den zweiten Kern nutzen kann, habe ich noch nicht rausgefunden. Gibts da irgendwelche einfachen Howtos, die irgendwer empfehlen kann? Vielleicht löst sich dadurch das Problem ja recht leicht 
Svenjamin:
RMT- Welche Vor und Nachteile weiss ich nicht.
- Datengeneration wird von Hardware getimed und ausgegeben,
die CPU füllt nur Descriptoren auf übergibt sie der Hardware,
Interrupts bleiben aktiv wärend der Übertragung
- die Descriptoren nehmen recht viel Platz weg,
viele LEDs benötigen Nachfüllen der Descriptoren
Flashen/Faden von LEDs kannst du in einen eigenen Task packen.
Falls es jemand interessiert, bin da grad zufällig drüber gestolpert: Scheint so, als ob die ESP32-Unterstützung der FastLED-Bibliothek auf der Verwendung des RMT basiert:
Merged- FastLED - ESP32 support using the RMT peripheral device - Github