TerraStat/lib/iarduino_NeoPixel/iarduino_NeoPixel.h

40 lines
4.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// Библиотека для работы с адресными светодиодами 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