Управлять несколькими полосками WS2812B с разным количеством светодиодов.
Во-первых, у меня не очень хороший английский, поэтому извините, если допустил ошибку.
Я использую WS2812FX, потрясающую библиотеку эффектов WS2812, основанную на библиотеке Adafruit NeoPixel, чтобы сделать небольшой контроллер для освещения в моей спальне.
Вопрос здесь в том, как мне использовать эту библиотеку для управления несколькими светодиодными лентами WS2812b с разным количеством светодиодов, например, одна лента с 30 светодиодами, другая с 55 светодиодами, но эффект будет просто циклически проходить через каждый отдельный светодиод каждой ленты. ЕСЛИ каким-то образом я могу добавить к этому еще один выходной контакт.
Пример: есть вызов эффекта «Сканер Ларсона», который загорается один светодиод, затем он проходит от первого светодиода к последнему и возвращается назад, я хочу, чтобы он делал то же самое на обеих полосах, на полосе из 30 светодиодов. он идет от первого светодиода к 30-му, затем возвращается назад и amp; на полосах из 55 светодиодов он идет от первого к 55-му светодиоду одновременно.
Надеюсь, вы понимаете, о чем я спрашиваю :(
Ссылка на библиотеку: https://github.com/kitesurfer1404/WS2812FX
@PhuocBull, 👍2
Обсуждение3 ответа
Для работы чипа WS2812 требуются сильно импульсы, зависящие от синхронизации, как я описываю на моя страница о Неопикселях. Речь идет о импульсах длительностью 350 нс.
Я полагаю, что добавить еще одну полосу будет невозможно, «если я смогу добавить к ней еще один выходной контакт». Речь идет не о добавлении контактов, а о возможности выдавать импульсы так быстро. Вы не сможете этого сделать, по крайней мере, на AVR Ардуино, и я сомневаюсь, что это сделают и те, у кого более быстрые чипы.
Что вы можете сделать, так это соединить различные полосы вместе, чтобы на самом деле получилась одна длинная полоса (при условии, что они не слишком далеко друг от друга). Разные полосы могли бы иметь свои собственные источники питания, но данные и земля должны идти от Arduino к первой полосе, затем ко второй и и так далее.
Примерно так:
Что касается синхронизации полосок, то это всего лишь программирование. Если вы хотите, чтобы первый светодиод на ленте из 30 светодиодов загорался одновременно с первым светодиодом на полосе из 55 светодиодов, тогда вам фактически нужно будет зажечь светодиод № 1 и светодиод № 31 одновременно.
Возможная альтернатива
На самом деле, что может сработать, так это сначала отправить на полосу №1, а затем на полосу №2 после смены контактов. Это означает, что вам придется чередовать отправки. Например, чтобы создать впечатление, что пиксель движется вперед и назад по двум полосам, вы заставляете его перемещаться на один пиксель на первой полосе, затем на один пиксель на второй полосе и так далее.
Я не уверен, поддерживает ли это упомянутая вами библиотека, поскольку количество светодиодов находится в конструкторе. Похоже, что да, поскольку вы можете изменить количество светодиодов и номер контакта.
Возможно, вам удастся создать два экземпляра объекта библиотеки (с разными именами), инициализировать их оба, а затем чередовать отправки между ними.
Ваш альтернативный подход работает, если вам не нужны слишком быстрые и точные эффекты. Я сделал это с помощью 5 полосок (каждая со своим контактом) с 240 светодиодными лентами. Но это также зависит от того, насколько сложен расчет вашей выкройки., @chrisl
у меня были некоторые анимации, которые были прерывистыми, затем я попробовал ESP32 и, черт возьми, мне пришлось вручную задерживать() их. лучший водитель на свете..., @dandavis
У меня был тот же вопрос! => Используйте Arduino для каждой светодиодной ленты :) и, если необходимо соединить их между собой, чтобы синхронизировать их Короче говоря, обойдите проблему
переведено Google :(
В репозитории библиотеки уже описаны «сегменты». Таким образом, вы просто подключаете вход данных полосы из 55 частей к выходу данных полосы из 30 частей. Создайте экземпляр как одну полосу из 85 частей, а затем определите сегменты и установите шаблоны для каждого по мере необходимости.
- Светодиодная лента WS2812B + First Pixel продолжает ломаться
- Использование аккумуляторов 18650 с повышающим преобразователем 3,7 В в 5 В.
- Нужно ли подключать светодиодную ленту WS2812 «последовательно», если я хочу адресовать каждый светодиод отдельно?
- Устранение неполадок светодиодной ленты WS2812b с кнопкой включения/выключения
- Функция NeoPixel Gradient Sweep
- ESP32 световые полосы, показывающие неправильные цвета
- игнорирование изменений значения потенциометра
- Проблема с индивидуальными адресуемыми светодиодами Adafruit Neopixel - Любой код заставляет светодиоды "сходить с ума"
Если вы хотите, чтобы эффект синхронизировался между полосами (запуск и остановка для обеих полос одновременно), вы можете использовать одну и ту же сигнальную линию для управления ими. В последней части, где светодиоды есть только на одной полоске, загоралась бы только эта, @chrisl
Какой Ардуино вы используете?, @Nick Gammon
переходит от первого светодиода к 55-му одновременно
... вы хотите сказать, что обе полоски должны сканировать от начала до конца за одинаковое время?, @jsotolaВы также можете посмотреть библиотеку FastLed. Я использовал его для управления 4 кольцами по 43 источника света здесь. https://www.youtube.com/watch?v=CGOxbehyoM4 https://github.com/FastLED/FastLED, @CrossRoads