Библиотека для работы с RGB светодиодами и лентами

ОБНОВЛЕНИЯ

Версия 1.17 от 11.03.2020
– Добавлена перегруженная setHEX

Предыдущие

Версия 1.13 от 08.06.2019
– Добавлен режим с настройкой частоты ШИМ
– Добавлена матрица коррекции LUT
– Добавлено коррекция по минимальному сигналу ШИМ
– Добавлена гамма-коррекция яркости

Версия 1.14 от 09.09.2019
– Убраны дефайны

Версия 1.15 от 16.09.2019
– Возвращены дефайны

Версия 1.16 от 15.12.2019
– Исправлен баг в fadeTo

ТЕОРИЯ


RGB светодиод или лента – очень крутая штука, ведь используя даже 8-ми битный ШИМ (0-255) мы можем получить 16.7 миллионов цветов и оттенков! Рассмотрим подключение светодиодов и лент к Arduino.

На сайте есть супер подробный урок по управлению RGB светодиодами и лентами, изучите его.

БИБЛИОТЕКА


Мощная библиотека для удобного управления RGB светодиодами и лентами для Arduino

  • 1530 значений для colorWheel
  • Работа в пространстве RGB
  • Работа в пространстве HSV
  • Установка цвета в формате HEX
  • Установка цветовой температуры
  • 16 предустановленных цветов
  • Настройка полярности ШИМ
  • Функция плавной смены цвета
  • Ограничение тока (по расчёту)
  • Регулировка общей яркости
  • Поддержание яркости LED ленты по мере разряда АКБ
  • Возможность управления 6-ю RGB диодами/лентами с одной Arduino (встроенный генератор ШИМ на ВСЕХ 20 пинах atmega328)
  • Режим с настройкой частоты ШИМ
  • Матрица коррекции LUT
  • Коррекция по минимальному сигналу ШИМ
  • CRT гамма-коррекция яркости

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

УСТАНОВКА


  • Про ручную установку читай здесь

ДОКУМЕНТАЦИЯ


// объявление
GRGB(uint8_t rpin, uint8_t gpin, uint8_t bpin);
// объявление с выбором режима генерации ШИМ (NORM_PWM / ANY_PWM)
// NORM_PWM - дефолтные ШИМ пины (3, 5, 6, 9, 10, 11 для UNO/NANO/MINI)
// ANY_PWM - любой пин делается ШИМ пином (частота ~150 Гц). Подробности в библиотеке GyverHacks
GRGB(uint8_t rpin, uint8_t gpin, uint8_t bpin, boolean pwmmode);
void highFrequency(long frequency);
// режим работы на высокой частоте ШИМ (указать в Герцах). Работает с библиотекой PWM.h
  
void setDirection(uint8_t direction);
// NORMAL / REVERSE - направление ШИМ
// общий катод - NORMAL
// общий анод - REVERSE
                            
void setMaxCurrent(uint16_t numLeds, float vcc, int maxCur);
// установка ограничения по току: количество светодиодов, напряжение питания в милливольтах, максимальный ток
                                  
void setBrightness(byte bright);                    // установка яркости (0-255)
void setGammaBright(boolean val);                   // вкл/выкл коррекции яркости
void setMinPWM(byte val);                           // минимальный сигнал PWM
void setLUT(float rc, float gc, float bc);          // установка коррекции цвета (матрица LUT)
void constantBrightTick(int minVolts, int vcc);     // корректировка под напряжение питания
void gammaTick(int vcc);                            // корректировка красного цвета при падении напряжения питания
                          
void setHEX(colors color);                          // установка цвета в формате HEX (вида 0x808080 )
void setRGB(uint8_t r, uint8_t g, uint8_t b);       // установка цвета в пространстве RGB (каждый цвет 0-255)
void setHSV(uint8_t h, uint8_t s, uint8_t v);       // установка цвета в пространстве HSV (каждая велиична 0-255)
void setHSV_fast(uint8_t h, uint8_t s, uint8_t v);  // более быстрый, но менее красивый вариант предыдущей функции
void setKelvin(int16_t temperature);                // установить цвет как температуру в Кельвинах (от 1000 до 10'000 - от красного к синему)
void colorWheel(int color);                         // установить цвет (0 - 1530). Максимально широкая палитра ярких цветов (смеси RGB)
  
void fadeTo(colors newColor, uint16_t fadeTime);
// плавно изменить текущий цвет к новому за вермя fadeTime в миллисекундах для HEX цвета
  
void fadeTo(uint8_t new_r, uint8_t new_g, uint8_t new_b, uint16_t fadeTime);
// для R G B

ПРИМЕРЫ


Остальные примеры смотри в папке examples библиотеки, также примеры можно открыть из Arduino IDE/Файл/Примеры

/*
   Пример управления цветом RGB светодиода одним потенциометром
   Потенциометр подключен к А0
   Светодиод/мосфеты подключены к ШИМ пинам!
   Для УНО и НАНО это 3, 5, 6, 9, 10, 11
*/
#include "GyverRGB.h"
GRGB diode(6, 5, 3);  // куда подключены цвета (R, G, B)
void setup() {
  
}
void loop() {
  byte H = analogRead(0) / 4; // получаем 0-255
  // меняем только цвет. Яркость и насыщенность вручную
  diode.setHSV(H, 255, 255);
}
#include "GyverRGB.h"
GRGB diode(6, 5, 3);  // куда подключены цвета (R, G, B)
void setup() {
  
}
void loop() {
  byte R = analogRead(0) / 4;
  byte G = analogRead(1) / 4;
  byte B = analogRead(2) / 4;
  diode.setRGB(R, G, B);
}
/*
   Пример управления RGB светодиодом плавная установка цвета
   Для УНО и НАНО это 3, 5, 6, 9, 10, 11
*/
#include "GyverRGB.h"
GRGB diode(6, 5, 3);  // куда подключены цвета (R, G, B)
/*
  Доступные цвета для fadeTo (HEX)
  WHITE   // белый
  SILVER  // серебро
  GRAY    // серый
  BLACK   // чёрный
  RED     // красный
  MAROON  // бордовый
  YELLOW  // жёлтый
  OLIVE   // олива
  LIME    // лайм
  GREEN   // зелёный
  AQUA    // аква
  TEAL    // цвет головы утки чирка https://odesign.ru/teal-color/
  BLUE    // голубой
  NAVY    // тёмно-синий
  PINK    // розовый
  PURPLE  // пурпурный
*/
void setup() {
}
void loop() {
  diode.fadeTo(RED, 500);
  diode.fadeTo(BLACK, 500);
  diode.fadeTo(LIME, 500);
  diode.fadeTo(BLACK, 500);
  diode.fadeTo(BLUE, 500);
  diode.fadeTo(BLACK, 500);
}
/*
   Демонстрация работы метода colorWheel, который
   устанавливает цвет по значениям 0-1530,
   делая плавный переход красный-зелёный-синий-красный
   Откройте монитор/плоттер для наглядного представления алгоритма
*/
#include "GyverRGB.h"
GRGB diode(5, 6, 9);  // куда подключены цвета (R, G, B)
void setup() {
  Serial.begin(9600);
}
void loop() {
  diode.colorWheel(map(analogRead(0), 0, 1023, 0, 1530));
  Serial.println(
    String(diode.showR) + " " +
    String(diode.showG) + " " +
    String(diode.showB));
  delay(20);
}

ПОДДЕРЖАТЬ


Вы можете поддержать меня за создание доступных проектов с открытым исходным кодом, полный список реквизитов есть вот здесь.

5/5 - (4 голоса)
Подписаться
Уведомить о
guest

7 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии