Set Timer for LED strip individually for each LED

OK, sorry, I did forget you exact problem.

Another glance, off to the beach just now, but

You call strip.show every time you loop, but you only change the strip during the 1000 ms service cycle. And not every time even then.

So… please try changing the logic so it only strip.show()s on the same relaxed schduel.

Either once a service period (1000 ms) or keep track if you made any real change, and only strip.show() if the publication of the strip data would change any pixels. A "needs updating" flag kinda thing.

Theory: you are calling strip.show() so often that you are actually spending a large amount of time doing, and during that time millis() does not advnace in real time.

If that fixes it up or makes it way better, I hope.

There are alternatives to millis(), but try this first. Easiest: call it once per service loop, that is once every 1000 ms.

a7