A lot of projects use the PainlessMesh's shared time base to synchronize effects in FastLED.
This is the most common solution:
uint32_t get_millisecond_timer() {
return mesh.getNodeTime()/1000 ;
}
Fastled has a flag:
#define USE_GET_MILLISECOND_TIMER
Set this flag to use the get_millisecond_timer() function in place of the default millis() function.
Unfortunately, this causes a visual glitch in FastLED effects on rollover (every ~71 minutes).
To work around this, I changed "micros()" to "millis()" on the 41th line of ntp.hpp, and changed
#define TIME_SYNC_ACCURACY 5000 (microseconds) to
#define TIME_SYNC_ACCURACY 5 (milliseconds).
This changes the shared clock to milliseconds, and effectively pushes the rollover issue out to ~50 days, far beyond the battery life of my project.
So far it seems to work well,
I'll reply with updates if I run into issues.