The delay() function call can cause problems when you want to add additional functionality to your code, such as external controls or multiple strings or functions.
Bad delay code:
void loop() {
// do something
delay(1000);
}
Hand written delay code:
unsigned long timer; // the timer
unsigned long interval = 1000; // the repeat interval
void setup() {
timer = millis(); // start timer
}
void loop() {
if ((millis()-timer) > interval) { // timed out
timer += interval; // reset timer by moving it along to the next interval
// do something
}
}
Using the FastLED scheduler:
void loop() {
EVERY_N_MILLIS(10) {
afunction();
}
FastLED.show();
}
void afunction() {
// do something
}
You could use timer based library function such as beatsin8():
void loop() {
uint8_t myhue = beatsin8(10,0,255)
fill_solid(leds,NUM_LEDS, CHSV(myhue, 255,255));
FastLED.show();
}