Кольцо на адресной светодиодной ленте (модуль Arduino NeoPixel Ring ws2812b) позволяет создавать различные красивые световые эффекты. В этой статье рассмотрим подключение 16 или 24 пиксельного светодиодного кольца ws2812b к микроконтроллеру Ардуино и приведем несколько примеров программ с потрясающими световыми эффектами для NeoPixel Ring с использованием библиотеки Adafruit_NeoPixel.h.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- Adafruit NeoPixel Ring 16 / 24 LED
- коннекторы
- скачать библиотеку hsv.h и Adafruit_NeoPixel.h
Дополнительные материалы на эту тему:
Важной особенностью кольца NeoPixel Ring ws2812b является высокое потребление тока. Несмотря на совместимость с микроконтроллерами Arduino, для NeoPixel Ring предпочтительно использовать отдельный источник питания. RGB светодиод потребляет до 45 мА, каждый цвет при максимальной яркости потребляет около 15 мА. Рассмотрим на примерах подключение и управление модулем от микроконтроллера Ардуино Уно.
NeoPixel Ring характеристики, распиновка

Arduino NeoPixel Ring характеристики
- Питание модуля: 5 В
- Ток, потребляемый каждым светодиодом: < 45 мА
- Рабочая температура: -25 … +80 °C
Модули NeoPixel Ring подключаются через вход (DIN) к цифровому контакту на плате Arduino. При подключении нескольких модулей они соединяются друг с другом — выход OUT каждого модуля подключается к входу IN следующего модуля, а вход IN первого модуля подключается к любому цифровому порту Arduino Uno или платы Nano. Светодиоды пронумерованы последовательно, начиная с ближайшего к плате Ардуино.
Как подключить кольцо NeoPixel Ring к Arduino

Для управления светодиодным кольцом от Ардуино можно использовать любую программу, используемую для управления WS281B адресной светодиодной лентой, нужно только указать нужное количество светодиодов в кольце. Например, вы можете использовать стандартные примеры из библиотеки Adafruit NeoPixel или FastLed. Далее мы разместили пример программы для работы с кольцом NeoPixel Ring.
Скетч для управления кольцом NeoPixel Ring 16/24
#include "Adafruit_NeoPixel.h"
#include "hsv.h"
#define PIN 4
#define CNT 12
#define MAXHUE 256*6
int pos = 0;
int hue = 1;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(CNT, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
}
void loop() {
for (int i = 0; i < CNT; i++)
strip.setPixelColor((i + pos) % CNT, getPixelColorHsv(i, hue, 255, strip.gamma8(i * (255 / CNT))));
strip.show();
pos++;
pos %= CNT;
hue += 2;
hue %= MAXHUE;
delay(50);
}
Заключение. В данном примере кольцо вращает точку, которая меняет цвет и постепенно проходит через все оттенки цвета. Переменная pos в программе увеличивается на 1 единицу каждые 50 милиссекунд, создавая эффект движения. Данный пример позволяет последовательно соединять неограниченное количество модулей NeoPixel Ring ws2812b и может быть использован в реальных проектах на базе платы Ардуино.
