Как зажечь адресную светодиодную ленту WS2812 на Arduino?
Купил адресную ленту (WS2812, она же NeoPixel), где каждый светодиод можно зажечь своим цветом. Подключил к Arduino, но не понимаю, как ей управлять — обычный digitalWrite ведь не подойдёт. Как зажечь нужные пиксели нужным цветом?
2 ответа
Адресной лентой управляют по одному проводу данных, но протокол сложный, поэтому используют готовую библиотеку — самая популярная Adafruit_NeoPixel или FastLED. Установи её через менеджер библиотек.
Подключение: GND → GND, питание ленты → 5V (для длинной ленты — отдельный блок питания!), вход данных DIN → цифровой пин (через резистор ~330 Ом).
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUM 8 // сколько светодиодов
Adafruit_NeoPixel strip(NUM, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // погасить всё
}
void loop() {
strip.setPixelColor(0, strip.Color(255, 0, 0)); // 1-й — красный
strip.setPixelColor(1, strip.Color(0, 255, 0)); // 2-й — зелёный
strip.show(); // ОБЯЗАТЕЛЬНО: применить изменения
delay(500);
}
Ключевые моменты: цвет задаёшь Color(R, G, B) (0–255), но реальный цвет появится только после strip.show(). Без show() ничего не меняется — это частая ошибка.
Важно про питание: одна яркая белая точка ленты ест примерно 60 мА, а лента из 30 штук на полной яркости — почти 2 ампера. От пина или USB столько не возьмёшь. Для длинной ленты ставь отдельный блок питания 5V и соединяй его GND с GND Arduino.