СОДЕРЖАНИЕ ►
Светодиодное кольцо на адресной ленте (модуль NeoPixel Ring ws2812b Arduino) позволяет создавать различные световые эффекты. Рассмотрим в этом обзоре подключение к микроконтроллеру Ардуино кольца из светодиодов ws2812b на 16 или 24 пикселя и предоставим несколько примеров программ с интересными эффектами для NeoPixel Ring с использованием библиотеки Adafruit_NeoPixel.h.
NeoPixel Ring WS2812B Arduino характеристики
Модули NeoPixel Ring подключаются входом (DIN) к цифровому выводу платы Arduino. Модули можно соединять друг с другом. При подключении нескольких модулей их соединяют друг с другом — выход OUT каждого модуля соединяют со входом IN следующего, а вход IN первого модуля подключают к любому порту Ардуино. Нумерация светодиодов является сквозной и начинается от ближайшего к Arduino.

Характеристики NeoPixel Ring
- Входное напряжение питания модуля: 5 В
- Ток, потребляемый каждым светодиодом: < 45 мА
- Уровень логической «1» на входе IN: > 0,7 Vcc
- Уровень логического «0» на входе IN: < 0,3 Vcc
- Рабочая температура: -25 … 80 °C
Как подключить NeoPixel Ring к Ардуино
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega
- модуль Adafruit NeoPixel Ring
- провода «папа-мама»

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









Добавить комментарий