Библиотека Adafruit NeoPixel

Библиотека Adafruit NeoPixel служит для управления адресными RGB светодиодами на базе WS2811 и WS2812(B).

Скачать библиотеку Adafruit NeoPixel

Описание библиотеки Adafruit NeoPixel

#include <Adafruit_NeoPixel.h>

Подключение библиотеки.

Adafruit_NeoPixel(uint16_t n, uint8_t p=6, neoPixelType t=NEO_GRB + NEO_KHZ800)

Конструктор. Создает объект класса Adafruit_NeoPixel для работы с адресными светодиодами.

  • Параметр n определяет количество светодиодов в ленте;
  • параметр p — номер контакта arduino, подключенный к первому светодиоду DIN;
  • параметр neoPixelType состоит из двух параметров: первый, по умолчанию, NEO_GRB — порядок основных цветов в потоке данных (нужно изменить, в зависимости от типа и производителя LED); второй это NEO_KHZ800 — частота потока данных (также доступно частота 400 кГц для более «слабых» устройств: NEO_KHZ400).

Вариации порядка следования цветов:

#define NEO_RGB  ((0 << 6) | (0 << 4) | (1 << 2) | (2)) // 0x06
#define NEO_RBG  ((0 << 6) | (0 << 4) | (2 << 2) | (1)) // 0x09
#define NEO_GRB  ((1 << 6) | (1 << 4) | (0 << 2) | (2)) // 0x52
#define NEO_GBR  ((2 << 6) | (2 << 4) | (0 << 2) | (1)) // 0xA1
#define NEO_BRG  ((1 << 6) | (1 << 4) | (2 << 2) | (0)) // 0x58
#define NEO_BGR  ((2 << 6) | (2 << 4) | (1 << 2) | (0)) // 0xA4

#define NEO_WRGB ((0 << 6) | (1 << 4) | (2 << 2) | (3)) // 0x1B
#define NEO_WRBG ((0 << 6) | (1 << 4) | (3 << 2) | (2)) // 0x1E
#define NEO_WGRB ((0 << 6) | (2 << 4) | (1 << 2) | (3)) // 0x27
#define NEO_WGBR ((0 << 6) | (3 << 4) | (1 << 2) | (2)) // 0x36
#define NEO_WBRG ((0 << 6) | (2 << 4) | (3 << 2) | (1)) // 0x2D
#define NEO_WBGR ((0 << 6) | (3 << 4) | (2 << 2) | (1)) // 0x39

#define NEO_RWGB ((1 << 6) | (0 << 4) | (2 << 2) | (3)) // 0x4B
#define NEO_RWBG ((1 << 6) | (0 << 4) | (3 << 2) | (2)) // 0x4E
#define NEO_RGWB ((2 << 6) | (0 << 4) | (1 << 2) | (3)) // 0x87
#define NEO_RGBW ((3 << 6) | (0 << 4) | (1 << 2) | (2)) // 0xC6
#define NEO_RBWG ((2 << 6) | (0 << 4) | (3 << 2) | (1)) // 0x8D
#define NEO_RBGW ((3 << 6) | (0 << 4) | (2 << 2) | (1)) // 0xC9

#define NEO_GWRB ((1 << 6) | (2 << 4) | (0 << 2) | (3)) // 0x63
#define NEO_GWBR ((1 << 6) | (3 << 4) | (0 << 2) | (2)) // 0x72
#define NEO_GRWB ((2 << 6) | (1 << 4) | (0 << 2) | (3)) // 0x93
#define NEO_GRBW ((3 << 6) | (1 << 4) | (0 << 2) | (2)) // 0xD2
#define NEO_GBWR ((2 << 6) | (3 << 4) | (0 << 2) | (1)) // 0xB1
#define NEO_GBRW ((3 << 6) | (2 << 4) | (0 << 2) | (1)) // 0xE1

#define NEO_BWRG ((1 << 6) | (2 << 4) | (3 << 2) | (0)) // 0x6C
#define NEO_BWGR ((1 << 6) | (3 << 4) | (2 << 2) | (0)) // 0x78
#define NEO_BRWG ((2 << 6) | (1 << 4) | (3 << 2) | (0)) // 0x9C
#define NEO_BRGW ((3 << 6) | (1 << 4) | (2 << 2) | (0)) // 0xD8
#define NEO_BGWR ((2 << 6) | (3 << 4) | (1 << 2) | (0)) // 0xB4
#define NEO_BGRW ((3 << 6) | (2 << 4) | (1 << 2) | (0)) // 0xE4

Создание объекта класса: 16 светодиодов, управляющий контакт подключен к 6 контакту ардуино, порядок следования цветов: зеленый-красный-синий, частота передачи данных 800 кГц.

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(16, 6, NEO_GRB + NEO_KHZ800);
void begin()

Инициализация библиотеки.

void setup() {
  pixels.begin();
}
void show()

Обновляет данные о цветах и настройки светодиодов.

pixels.setPixelColor(10, pixels.Color(150,150,150)); 
pixels.show();
void setPin(uint8_t p)

Изменяет номер контакта ардуино, подключенный к светодиодам.

pixels.setPin(7);
void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)

Устанавливает цвет светодиода.

  • n — номер светодиода (начинается от 0);
  • r (red) — количество красного цвета (8 бит, от 0x00 до 0xFF или от 0 до 255 );
  • g (green) — количество зеленого цвета (8 бит, от 0x00 до 0xFF или от 0 до 255 );
  • b (blue) — количество синего цвета (8 бит, от 0x00 до 0xFF или от 0 до 255 ).
pixels.setPixelColor(0, 255, 0, 0); // Красный 
pixels.setPixelColor(1, 0, 255, 0); // Зеленый 
pixels.setPixelColor(2, 0, 0, 255); // Синий 
pixels.setPixelColor(3, 255, 230, 0); // Желтый 
pixels.show(); 
delay(1000);
void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)

Устанавливает цвет светодиода (для светодиодов RGBW — с четвертым белым светодиодом).

  • n — номер светодиода (начинается от 0);
  • r (red) — количество красного цвета (8 бит, от 0x00 до 0xFF или от 0 до 255);
  • g (green) — количество зеленого цвета (8 бит, от 0x00 до 0xFF или от 0 до 255);
  • b (blue) — количество синего цвета (8 бит, от 0x00 до 0xFF или от 0 до 255);
  • w — количество белого цвета (8 бит, от 0x00 до 0xFF или от 0 до 255).
pixels.setPixelColor(0, 255, 0, 0, 100); 
pixels.setPixelColor(1, 0, 255, 0, 200);
pixels.setPixelColor(2, 0, 0, 255, 123);
pixels.setPixelColor(3, 255, 230, 0, 111);
pixels.show(); 
delay(1000);
void setPixelColor(uint16_t n, uint32_t c)

Устанавливает цвет светодиода.

  • n — номер светодиода (начинается от 0);
  • c — цвет, представленный 24-мя битами ( от 0x000000 до 0xFFFFFF или от 0 до 16 777 215).

pixels.setPixelColor(0, 0xFF0000); // Красный 
pixels.setPixelColor(1, 0x00FF00); // Зеленый 
pixels.setPixelColor(2, 0x0000FF); // Синий 
pixels.setPixelColor(3, 0xFFE600); // Желтый 
pixels.show(); 
delay(1000);
void fill(uint32_t c=0, uint16_t first=0, uint16_t count=0)

Устанавливает заданный цвет c на количество светодиодов count начиная от светодиода first.

Например, установить 10 первых светодиодов в синий цвет можно так:

pixels.fill(0x0000FF, 0, 10); // Установить 10 светодиодов подряд в синий цвет начиная с 0 
pixels.show();                // Обновить изменения
delay(10000);
void setBrightness(uint8_t b)

Устанавливает значение яркости b. Может принимать значения от 0 до 255, где 0 — это отключить светодиоды, а 255 — максимальная яркость. После вызова метода setBrightness необходимо обновить параметры светодиодов методом show.

pixels.setBrightness(50);     // Установить яркость в значение 50
pixels.fill(0x0000FF, 0, 10); // Установить 10 светодиодов подряд в синий цвет начиная с 0 
pixels.show();                // Обновить изменения
delay(3000);
pixels.setBrightness(255);    // Установить яркость в максимальное значение
pixels.show();                // Обновить изменения
delay(3000);
pixels.setBrightness(0);      // Установить яркость в 0, т.е. погасить LEDs
pixels.show();                // Обновить изменения
delay(2000);
void clear()

Отключает (очищает) все светодиоды. После вызова метода clear необходимо вызвать метод show.

void loop() {
  pixels.fill(0xFF0000, 0, 35); // Установить 35 светодиодов подряд в красный цвет начиная с 0 
  pixels.show();                // Обновить изменения
  delay(100);
  pixels.clear();               // Погасить светодиоды
  pixels.show();                // Обновить изменения
  delay(100);
  pixels.fill(0x00FF00, 0, 35); // Установить 35 светодиодов подряд в зеленый цвет начиная с 0 
  pixels.show();                // Обновить изменения
  delay(100);
  pixels.clear();               // Погасить светодиоды
  pixels.show();                // Обновить изменения
  delay(100);
  pixels.fill(0x0000FF, 0, 35); // Установить 35 светодиодов подряд в синий цвет начиная с 0 
  pixels.show();                // Обновить изменения
  delay(100);
  pixels.clear();               // Погасить светодиоды
  pixels.show();                // Обновить изменения
  delay(100);
}
void updateLength(uint16_t n)

Изменяет количество светодиодов в ленте.

pixels.updateLength(30);
void updateType(neoPixelType t)

Изменяет тип светодиодов (порядок следования основных цветов и частоту потока данных).

pixels.updateType(NEO_RGB + NEO_KHZ400);
int8_t getPin()

Возвращает номер управляющего контакта ардуино, который был указан при инициализации объекта Adafruit_NeoPixel или после изменен методом setPin.

Serial.println(pixels.getPin());
uint16_t numPixels() const

Возвращает количество светодиодов указанных при инициализации или после изменен методом updateLength.

Serial.println(pixels.numPixels());
static uint32_t Color(uint8_t r, uint8_t g, uint8_t b)

Преобразует 3 переменные по 8 бит (r — красный от 0 до 255, g — зеленный от 0 до 255, b — синий от 0 до 255) в 32-х битную переменную.

uint32_t c = pixels.Color(20, 100, 167);
Serial.println(c, HEX);   // Результат: 1464A7
static uint32_t Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w)

Преобразует 4 переменные по 8 бит (r — красный от 0 до 255, g — зеленный от 0 до 255, b — синий от 0 до 255, w — белый от 0 до 255) в 32-х битную переменную.

uint32_t c = pixels.Color(20, 100, 167, 111);
Serial.println(c, HEX);   // Результат: 6F1464A7
uint32_t getPixelColor(uint16_t n) const

Возвращает 32-битную переменную, которая хранит цвет указанного светодиода n.

pixels.fill(0xFF0000, 0, 10);
Serial.println(pixels.getPixelColor(5), HEX);  // Выведет в порт FF0000
pixels.show();
delay(1000);
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии