40 lines
4.0 KiB
C++
40 lines
4.0 KiB
C++
// Библиотека для работы с адресными светодиодами WS2812B: http://iarduino.ru/shop/Expansion-payments/neopixel-trema-modul.html
|
||
// Версия: 1.0.0
|
||
// Последнюю версию библиотеки Вы можете скачать по ссылке: http://iarduino.ru/file/296.html
|
||
// Подробное описание функции бибилиотеки доступно по ссылке: http://wiki.iarduino.ru/page/adresnye-svetodiody-moduli-neopixel/
|
||
// Библиотека является собственностью интернет магазина iarduino.ru и может свободно использоваться и распространяться!
|
||
// При публикации устройств или скетчей с использованием данной библиотеки, как целиком, так и её частей,
|
||
// в том числе и в некоммерческих целях, просим Вас опубликовать ссылку: http://iarduino.ru
|
||
// Автор библиотеки: Панькин Павел
|
||
// Если у Вас возникли технические вопросы, напишите нам: shop@iarduino.ru
|
||
|
||
#ifndef iarduino_NeoPixel_h
|
||
#define iarduino_NeoPixel_h
|
||
|
||
#if defined(ARDUINO) && (ARDUINO >= 100)
|
||
#include <Arduino.h>
|
||
#else
|
||
#include <WProgram.h>
|
||
#endif
|
||
|
||
#define NeoPixelAll 65535L // Константа указывающая, что цвет применяется ко всем светодиодам
|
||
|
||
class iarduino_NeoPixel{
|
||
public: iarduino_NeoPixel (uint8_t, uint16_t=0); // Подключение (№ вывода к которому подключены светодиоды, количество подключённых светодиодов)
|
||
void setColor (uint16_t, uint8_t, uint8_t, uint8_t, uint8_t=127); // Указание цвета (№ светодиода, R,G,B, яркость)
|
||
void setColor (uint16_t, uint32_t, uint8_t=127); // Указание цвета (№ светодиода, RGB, яркость)
|
||
bool begin (void); // Инициализация работы со светодиодами
|
||
void write (void); // Запись данных в светодиоды
|
||
uint16_t count (void){return lenRGB? lenLED:0;} // Получение количества светодиодов
|
||
uint8_t * getPointer (void){return lenRGB? arrRGB:0;} // Получение указателя на массив с цветами для светодиодов
|
||
private:
|
||
volatile uint8_t * portOutput; // Объявляем указатель на адрес регистра выходных значений порта. В этом регистре находится один байт, биты которого и являются логическими уровнями на выходе порта
|
||
uint8_t * arrRGB; // Объявляем указатель на массив с цветами для светодиодов
|
||
uint8_t pinOutput; // Определяем переменную для хранения номера вывода используемого как выход для подключения светодиодов.
|
||
uint8_t pinMask; // Объявляем переменную для хранения маски вывода. Она хранит один байт в котором установлен только один бит. Порядковый номер этого бита, соответствует номеру вывода на порту (от 0 до 7)
|
||
uint16_t lenRGB=0; // Определяем количество байт в массиве с цветами светодиодов (будет равно количеству светодиодов * RGB)
|
||
uint16_t lenLED; // Объявляем количество свтодиодов
|
||
};
|
||
|
||
#endif
|