Adafruit NeoPixel Ring Arduino

Светодиодное кольцо на адресной ленте (модуль 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 WS2812B Arduino pinout
NeoPixel Ring WS2812B Arduino pinout, характеристики

Характеристики 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);
}

Пояснения к коду:

  1. следует указать необходимое количество светодиодов в модуле.
  2. скорость эффектов зависит от времени задержки — 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);
}

Пояснения к коду:

  1. в представленных примерах используется один и тот же алгоритм. Переменная pos увеличивается на 1 единицу каждые 50 мс, что и создает эффект движения;
  2. в этом примере кольцо вращает точку, которая меняет цвет и постепенно переходит через все цветовые оттенки.

Заключение. Данная сборка позволяет включать последовательно неограниченное количество модулей и использовать данный продукт в реальных проектах. Важной особенностью светодиодов типа ws2812b является высокое потребление тока, и не смотря на совместимость с классическими платами Arduino по питанию, для кольца NeoPixel Ring лучше использовать отдельный источник питания.



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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.