WS2812B (NeoPixel): подключение к ESP32 и Arduino

Адресная светодиодная лента

Каждый светодиод — свой цвет и яркость, а провод данных один. Ленты, кольца, матрицы — управление одинаковое.

Как работает

В каждом корпусе WS2812B — три светодиода (красный, зелёный, синий) и микросхема, которая принимает свои 24 бита цвета и передаёт остальные дальше по цепочке. Данные идут на DIN со скоростью 800 кбит/с.

Библиотеки: Adafruit NeoPixel (strip.setPixelColor(i, r, g, b) и strip.show()) или FastLED — быстрее и с эффектами.

Главный расчёт — питание: до 60 мА на светодиод при белом на полной яркости. Метр ленты на 60 светодиодов — до 3,6 А.

Выводы

ВыводНазначение
DINвход данных
VCCпитание 5 В
GNDобщий провод — общий с контроллером

Подключение к ESP32

WS2812B (NeoPixel)ESP32
DINGPIO5
VCC3V3
GNDGND

Схема из примера «NeoPixel: адресные светодиоды».

⚡ В примере «WS2812B (NeoPixel)» питается от 3V3 — в симуляторе так проще, и модель это допускает. Настоящий модуль рассчитан на 5 В: подключайте VCC к VIN (5 В от USB) или к отдельному источнику 5 В с общей землёй.

NeoPixel: адресные светодиоды

Открыть пример целиком
Код скетча
#include <Adafruit_NeoPixel.h>

const int PIN = 5, COUNT = 8;
Adafruit_NeoPixel strip(COUNT, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.setBrightness(40);   // на полной яркости лента ест много тока
  strip.show();
}

void loop() {
  for (int i = 0; i < COUNT; i++) {
    strip.clear();
    strip.setPixelColor(i, strip.Color(0, 120, 255));
    strip.show();
    delay(80);
  }
}

В железе

В железе: резистор 300–500 Ом в линию данных у ленты, конденсатор 1000 мкФ на питание ленты, земля ленты и контроллера — общая. Уровень 3,3 В от ESP32 для ленты на 5 В — на границе, надёжнее через преобразователь уровней (например, 74AHCT125).

Частые ошибки

Другие детали