1

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?

4
  • 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 '20 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 '20 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 '20 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 '20 at 11:08
4

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

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

Your Answer

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.