Адресная светодиодная лента ws2812b Arduino привлекает многих радиолюбителей возможностью создавать интересные и яркие проекты. Но прежде чем приступить к созданию нового проекта, необходимо понять, как правильно подключить адресные светодиоды ws2812 или ws2811 к Arduino Nano и управлять ими. Рассмотрим примеры подключения и программирования адресной светодиодной ленты от Ардуино.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- адресная лента ws2812 / ws2811
- источник питания 5 / 12 Вольт
- резистор
- коннекторы
- библиотека Adafruit_NeoPixel.h
Дополнительные материалы на эту тему:
Адресные ленты ws2812 и ws2811 имеют плотность от 30 до 144 светодиодов на метр и производятся в различных вариантах защиты: IP30, IP65, IP67, IP68. Все версии, кроме IP30, могут использоваться на открытом воздухе при температуре от -25°C до +80°C. Другой, более надежный, но дорогой вариант светодиодов ws2813 с питанием от 5 Вольт, характеризуются способностью передавать сигналы даже через сгоревший чип.
Светодиоды WS2812B Arduino характеристики

Характеристики WS2812B (datasheet)
- Плотность: 30 — 144 светодиода на метр
- Размер светодиода: 5 x 5 мм
- Напряжение питания: максимум 5 В
- Номинальный ток: 60 мА (все пиксели горят светят в полную силу)
- Скорость передачи данных: 800 кГц
- Разъем: 3-контактный JST SM
RGB светодиодная лента ws2812b — это высшее достижение в области освещения. Каждый светодиод в ленте состоит из RGB светодиода и контроллера с тремя транзисторными выходами. Это позволяет управлять цветом любого светодиода по отдельности и создавать удивительные цветовые и эффекты на новогодней гирлянде, поэтому устройство пользуется популярностью, несмотря на свою высокую стоимость.
Подключение адресной ленты ws2812b к Arduino

Для программирования умной светодиодной ленты, чаще всего используются две популярные библиотеки: FastLED и Adafruit_NeoPixel. Эти библиотеки можно скачать на нашем сайте. FastLED.h и Adafruit_NeoPixel.h просты в использовании, но отличаются по функциональности и занимаемой памяти в плате. После сборки этой простой схемы, подключения общего источника питания к ленте и микроконтроллеру, загрузите скетч.
Скетч для адресной светодиодной ленты ws2812b
// подключение библиотеки для управления лентой
#include "Adafruit_NeoPixel.h"
// пин для подключения управляющего сигнала
#define PIN 4
// количество пикселей в ленте
#define NUMPIXELS 100
// создание объекта strip
Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// инициализация ленты
strip.begin();
// яркость ленты (максимум 255)
strip.setBrightness(50);
}
void loop() {
strip.setPixelColor(0, strip.Color(255, 0, 0))
strip.show(); // отправка информации на ленту
delay(500); // задержка 500 мс
strip.clear(); // очистка ленты
strip.setPixelColor(1, strip.Color(0, 0, 255));
strip.show();
delay(500);
strip.clear();
strip.setPixelColor(2, strip.Color(255, 255, 255));
strip.show();
delay(500);
strip.clear();
}
Подключение адресной ленты ws2811 к Arduino

Если вы используете ws2811 — адресную светодиодную ленту с питанием 12 Вольт, ее следует подключить по этой схеме. Резистор на цифровом пине Ардуино защищает порт от выгорания (если led лента будет случайно обесточена, то на нее пойдет напряжение с цифрового вывода, который может при этом перегореть). Нумерация светодиодов начинается с нуля, если вы хотите включить первый светодиод, то нужно указать «0».
Скетч для адресной светодиодной ленты ws2811
// подключение библиотеки для управления лентой
#include "Adafruit_NeoPixel.h"
// пин для подключения управляющего сигнала
#define PIN 4
// количество пикселей в ленте
#define NUMPIXELS 100
// создание объекта strip
Adafruit_NeoPixel strip (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
// инициализация ленты
strip.begin();
// яркость ленты (максимум 255)
strip.setBrightness(50);
}
void loop() {
// включение красного цвета
for (int i = -1; i < NUMPIXELS; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.show();
delay(100);
}
// включение зеленого цвета
for (int i = -1; i < NUMPIXELS; i++) {
strip.setPixelColor(i, strip.Color(0, 255, 0));
strip.show();
delay(100);
}
// включение синего цвета
for (int i = -1; i < NUMPIXELS; i++) {
strip.setPixelColor(i, strip.Color(0, 0, 255));
strip.show();
delay(100);
}
}
Заключение. Светодиоды WS2812B довольно энергоемки, один светодиод потребляет до 60 мА при максимальной яркости. Для rgb ленты со 100 светодиодами потребуется источник питания силой 6 ампер и более. Arduino и светодиодная лента могут быть подключены к разным источникам питания, но земля должна быть общей. Дело в том, что контакт GND также участвует в управлении адресной лентой от платы Arduino Uno.

Блин 🙂 фигня у меня какая то происходит — ESP32 уходит в бесконечную перезагрузку со скетчем для ws2812b