I am using FastLED to drive 16 pixels on an addressable WS2812B RGB LED strip. My application has extremely tight timing constraints. Specifically, I need to turn the LEDs on and off within less than 1 ms. I tried FastLED but it requires a minimum of 2.5 ms to execute the Show command, regardless of the number of LEDs attached. I analyzed another library and that one has the exact same limitation. In fact, I found a snippet of code that said roughly: "if this operation performs in less than 2500 us, then wait idly until the 2500 us have passed. Apparently this wait is necessary due to timing requirements of WS2812x strips. Does anyone have any advise about other addressable RGB LED strips or libraries that can be turned on and off within 1 ms?

New contributor
Johann is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • 1
    What are you trying to achieve that needs such fast control of addressable LEDs? I suspect you are going about whatever it is the wrong way. – Majenko Sep 16 at 10:27
  • And why do you want to use the WS2812B LEDs for such tight timing. That doesn't seem to be a good choice, considering the 1ms time constraint and the fact, that you only have 16 pixels – chrisl Sep 16 at 10:50
  • I want to make a POV clock (Youtube it). In such clocks LEDs on a rotating arm are lit at precisely timed moments to create the illusion of an analog clock. For that to work, the arm must rotate at >10 revs per sec. For a clock with hands for minutes and seconds I need to divide a full rev into 60 visually distinct sectors. For that, I need to turn the LEDs on and off 60 times during one rev (100 ms). Thus, I need the Show function to run 60 times in 100 ms. That is why the Show function's "hardwired" duration of exactly 2.5 ms is not fast enough. – Johann Sep 16 at 11:01
  • I want to use the WS2812B LEDs because of the convenience of needing only one pin for data. If I used 16 individual 5mm RGB LEDs, then I would need 3x 16 = 48 PWM-enabled pins to control the LEDs. In my current attempt with a WS2812 strip I need only 3 wires between the stationary Arduino (or Teensy) and the continuously rotation LEDs, which allows me to use a slip ring to transfer power and data to the LEDs. Others who built POV clocks mounted their Arduino Nanos onto the rotor arm so they only need to transfer power through a slip ring but not a lot of PWM signals. – Johann Sep 16 at 11:08

By default the fastLed is limiting the refresh rate to 400 fps (i.e. 2.5ms).

You can disable that with FastLED.setMaxRefreshRate(0);

| improve this answer | |

Your Answer

Johann is a new contributor. Be nice, and check out our Code of Conduct.

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.