← Все вопросы

Как зажечь адресную светодиодную ленту WS2812 на Arduino?

Задан 20 месяцев назад769 просмотров2 ответа
6

Купил адресную ленту (WS2812, она же NeoPixel), где каждый светодиод можно зажечь своим цветом. Подключил к Arduino, но не понимаю, как ей управлять — обычный digitalWrite ведь не подойдёт. Как зажечь нужные пиксели нужным цветом?

2 ответа

11
✓ Принятый ответ — помог автору

Адресной лентой управляют по одному проводу данных, но протокол сложный, поэтому используют готовую библиотеку — самая популярная 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() ничего не меняется — это частая ошибка.

5

Важно про питание: одна яркая белая точка ленты ест примерно 60 мА, а лента из 30 штук на полной яркости — почти 2 ампера. От пина или USB столько не возьмёшь. Для длинной ленты ставь отдельный блок питания 5V и соединяй его GND с GND Arduino.

Ваш ответ

, чтобы ответить на вопрос.