Можно ли сделать FastLED быстрее?

Я использую FastLED для управления 16 пикселями адресной светодиодной ленты WS2812B RGB. Мое приложение имеет чрезвычайно жесткие временные ограничения. В частности, мне нужно включать и выключать светодиоды менее чем за 1 мс. Я попробовал FastLED, но для выполнения команды Show требуется как минимум 2,5 мс, независимо от количества подключенных светодиодов. Я проанализировал другую библиотеку, и у нее точно такое же ограничение. На самом деле, я нашел фрагмент кода, в котором примерно говорилось: «Если эта операция выполняется менее чем за 2500 мкс, то праздно ждите, пока не пройдет 2500 мкс». По-видимому, это ожидание необходимо из-за временных требований полос WS2812x. Есть ли у кого-нибудь какие-либо советы о других адресных светодиодных лентах или библиотеках RGB, которые можно включать и выключать в течение 1 мс?

, 👍1

Обсуждение

Чего вы пытаетесь достичь, что требует такого быстрого управления адресными светодиодами? Я подозреваю, что вы идете о том, что это неправильный путь., @Majenko

И почему вы хотите использовать светодиоды WS2812B для таких жестких сроков? Это не кажется хорошим выбором, учитывая ограничение по времени в 1 мс и тот факт, что у вас всего 16 пикселей., @chrisl

Я хочу сделать POV часы (Youtube это). В таких часах светодиоды на вращающемся рычаге загораются в точно рассчитанные моменты времени, создавая иллюзию аналоговых часов. Чтобы это работало, рука должна вращаться со скоростью более 10 оборотов в секунду. Для часов со стрелками для минут и секунд мне нужно разделить полный оборот на 60 визуально различных секторов. Для этого мне нужно включать и выключать светодиоды 60 раз за один оборот (100 мс). Таким образом, мне нужно, чтобы функция Show выполнялась 60 раз за 100 мс. Вот почему "зашитая" продолжительность функции Show, составляющая ровно 2,5 мс, недостаточно мала., @Johann

Я хочу использовать светодиоды WS2812B из-за удобства использования только одного контакта для данных. Если бы я использовал 16 отдельных 5-миллиметровых RGB-светодиодов, то мне потребовалось бы 3 x 16 = 48 контактов с поддержкой ШИМ для управления светодиодами. В моей текущей попытке с полосой WS2812 мне нужно всего 3 провода между стационарным Arduino (или Teensy) и постоянно вращающимися светодиодами, что позволяет мне использовать токосъемное кольцо для передачи питания и данных на светодиоды. Другие, кто построил часы POV, установили свои Arduino Nano на руку ротора, поэтому им нужно было передавать мощность только через токосъемное кольцо, но не много сигналов PWM., @Johann


1 ответ


4

По умолчанию fastLed ограничивает частоту обновления до 400 кадров в секунду (т.е. 2,5 мс).

Вы можете отключить это с помощью FastLED.setMaxRefreshRate(0);

,