Настройка NeoPixels с Vixen Lights и Arduino: Пошаговое руководство
Компоненты и расходные материалы
| Arduino Nano R3 | × | 1 |
| Arduino UNO | × | 1 |
| Лента пикселей 60 пикселей/метр (WS2812B) | × | 1 |
| Резистор 470 Ом | × | 1 |
| Блок питания 5В, 40А | × | 1 |
| Макетная плата (Breadboard) | × | 1 |
| Провода Dupont (перемычки) | × | 1 |
Необходимые инструменты
- Паяльник
- Пойло
Программное обеспечение и сервисы
- Vixen Lights (версия 3.4u2 64-bit)
- Arduino IDE
О проекте
Что такое Vixen Lights?
Vixen Lights — это программное обеспечение для создания собственных световых шоу и автоматизации дисплеев. Версия 3.x была полностью переработана для поддержки адресуемых «пиксельных» лент.
Что такое пиксель?
Пиксель — это группа из трёх светодиодов (красного, зелёного и синего), чья интенсивность может варьироваться для получения любого цвета. Пиксели WS2812B содержат встроенный контроллер, принимающий данные по одному проводу, отображающий свой цвет и передающий данные дальше. Адресуемые RGB-ленты легко узнать по трём проводам: питание, земля и данные. Обычные («глупые») RGB-ленты имеют четыре провода.

Питание ленты
RGB-пиксели потребляют много энергии. Arduino может запитать лишь несколько пикселей через встроенный стабилизатор, поэтому нужен внешний блок питания. Напряжение зависит от ленты (в примере 5В). Каждый пиксель на максимальной яркости белого потребляет ~60 мА. Для 150 пикселей это ~9 А.
Тонкие медные дорожки ленты создают сопротивление, вызывая просадку напряжения. Это приводит к мерцанию или неисправностям. Решение — подключать питание каждые 50 пикселей, перерезая ленту и соединяя только линию данных, а питание и землю прокладывая отдельными толстыми проводами от блока питания. Выбирайте сечение проводов с запасом.
Контроллер на Arduino
Большинство плат Arduino подходят как промежуточный контроллер между ПК с Vixen и лентой. Главное ограничение — скорость последовательного порта (обычно 115 200 бод). При передаче 450 байт (150 пикселей × 3 цвета) задержка составляет ~45 мс, что позволяет обновлять ленту 20 раз в секунду.

Код основан на разработке David Hunt (blog.huntgang.com).
Настройка последовательного порта в Vixen
Шаг 1. Добавьте Generic Serial Controller
В меню справа вверху выберите «Add Generic Serial Controller».

Шаг 2. Установите количество выходов
Количество выходов = 3 × число пикселей. Для 30 пикселей — 90 выходов.

Шаг 3. Настройте COM-порт
Нажмите значок шестерёнки внизу справа. Выберите COM-порт Arduino (в примере COM13) и скорость 115200 бод. Остальные параметры оставьте по умолчанию.

Шаг 4. Заголовок с количеством пикселей
В поле «Header Text» введите трёхзначное число пикселей с ведущими нулями. Для 30 пикселей — >>030<<. Arduino начнёт мигать, получая данные.
Настройка элемента для пикселей
Шаг 5. Создайте элемент Pixel Strip
В выпадающем списке слева выберите «Single Item», нажмите зелёную кнопку «+», назовите «Pixel Strip».

Шаг 6. Добавьте все пиксели
Правый клик на «Pixel Strip» → «Add Multiple» → «Numbered Items». Имя: «Pixel Strip», количество: 30. Нажмите OK.

Шаг 7. Настройте цвет
Выделите «Pixel Strip», в свойствах «Color Handling» выберите «They can be any color: they are full RGB and mix to make any color».

Шаг 8. Привяжите элемент к контроллеру
Выделите «Pixel Strip» слева и «Generic Serial» справа. Число «Unconnected Patch Points» должно совпадать. Нажмите «Patch Elements to Controllers».

Шаг 9. Проверка
Графическое представление должно выглядеть как на скриншоте.

Создание первой последовательности
Шаг 10. Новая последовательность
Vixen → New Sequence…

Шаг 11. Импорт аудио
Tools → Audio → Import Audio (MP3).

Шаг 12. Работа с таймлайном
Используйте лупы (+/−) для масштабирования временной шкалы.

Шаг 13. Детектор биттов
Tools → Audio → Beat/Bar Detector. Белые линии меток биттов помогут синхронизировать эффекты.

Шаг 14. Добавление эффектов
В меню Effects выберите «Chase» (Basic Lighting или Pixel Lighting), перетащите на строку Pixel Strip, растяните мышью.

Шаг 15. Настройка эффекта
Выделите эффект, справа появятся параметры: направление, цвет, пульсация, глубина. Включите Effect Preview.

Шаг 16. Запуск
Нажмите Play (левый верхний угол). Наслаждайтесь! На YouTube много примеров.
Примечание: При подключённом Arduino и запущенном Vixen светодиод RX на плате будет мигать — это значит, что Arduino ждёт данные.
Код для Arduino
Требуется библиотека FastLED (установите через Library Manager или с fastled.io).
/* Vixen Lights 3.x - Arduino Generic Serial for Addressable Pixels
* Подключите линию данных (WS2811/WS2812) к пину 6 Arduino.
* Установите библиотеку FastLED с https://fastled.io
* В Vixen 3.x настройте Generic Serial Controller: 115200, 8, none, 1.
* Каналов = 3 × число пикселей.
* Создайте элемент «Multiple Items (1 × число пикселей)», тип RGB.
* Авторы: Richard Sloan (www.themindfactory.com) и David Hunt (blog.huntgang.com)
* Версия 1.4
*/
#include <FastLED.h>
#define NUM_LEDS 300
#define DATA_PIN 6
CRGB leds[NUM_LEDS];
void setup() {
Serial.begin(115200);
}
void loop() {
int cnt;
unsigned int num_leds;
unsigned int d1, d2, d3;
for(;;) {
cnt = 0;
// Ожидание заголовка '>>'
while(!Serial.available()); if(Serial.read() != '>') continue;
while(!Serial.available()); if(Serial.read() != '>') continue;
// Три цифры количества пикселей
while(!Serial.available()); d1 = Serial.read();
while(!Serial.available()); d2 = Serial.read();
while(!Serial.available()); d3 = Serial.read();
// Окончание заголовка '<<'
while(!Serial.available()); if(Serial.read() != '<') continue;
while(!Serial.available()); if(Serial.read() != '<') continue;
num_leds = (d1-'0')*100 + (d2-'0')*10 + (d3-'0');
if(num_leds > NUM_LEDS) continue;
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, num_leds);
do {
while(!Serial.available()); leds[cnt].r = Serial.read();
while(!Serial.available()); leds[cnt].g = Serial.read();
while(!Serial.available()); leds[cnt++].b = Serial.read();
} while(--num_leds);
FastLED.show();
}
}
Схема подключения
Используйте резистор 470 Ом на линии данных.


Производственный процесс
- Управление яркостью LED с ШИМ через кнопку на Arduino Mega
- Создание ультразвукового левитатора на Arduino: пошаговое руководство
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Логгер температуры и влажности на Arduino с DHT11 и Ethernet Shield
- Умная банка на ESP8266 + Arduino: мониторинг наполненности в реальном времени
- Точное измерение частоты и коэффициента заполнения на Arduino UNO
- Измерение массы Земли с Arduino: пошаговое руководство по DIY
- Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
- Цифровой компас в реальном времени на Arduino и Processing