Skip to content Skip to main navigation Skip to footer

Arduino и RGB светодиод

Описание


RGB светодиод – три светодиода с цветами Red (красный), Green (зелёный) и Blue (синий), размещённые в общем корпусе. Более подробную теорию можно найти в уроке про RGB светодиоды.

Подключение


“Голый” RGB светодиод подключается к источнику 5V точно так же, как обычный светодиод: с ограничением тока при помощи резисторов, иначе довольно быстро сгорит. Но в наборе GyverKIT идёт удобный RGB модуль, на котором резисторы уже распаяны, а сам светодиод имеет общий катод:

Соответственно достаточно подключить GND к пину “-“, а пины RGB – к любым цифровым пинам микроконтроллера.

  • При подключении к обычным цифровым пинам мы получим всего 8 цветов – чёрный (все выключены), белый (все включены) и 6 сочетаний между тремя цветами
  • При подключении к ШИМ пниам у нас появится возможность контролировать яркость каждого канала цвета, что при стандартных настройках даёт 256 градаций яркости и 256*256*256 = 16.7 миллионов оттенков для RGB светодиода!
  • Подключение к Wemos будет точно такое же, но там ШИМ сигнал можно включить на любом пине, причём с глубиной 10 бит (1024 значения), что даёт 1 миллиард оттенков! Это так много, что глазами различить не получится =)
    • У Wemos логический уровень 3.3V, поэтому светодиод будет гореть менее ярко, т.к. будет потреблять меньший ток. В то же время допустимый ток с пина Wemos ниже, чем у Arduino, поэтому всё работает “как нужно”!

Библиотеки


По сути библиотеки не нужны, так как светодиодом можно управлять при помощи базовых функций вывода. Но для удобства работы с разными цветовыми моделями удобнее использовать уже готовые алгоритмы, например мою библиотеку GRGB. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GRBG. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры ручного управления


Для удобства управления обозначим пины, подключение например как по схеме выше:

#define R_PIN 6
#define G_PIN 5
#define B_PIN 3

В блоке setup() сделаем пины выходами:

pinMode(R_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);

Готово! Теперь можно включить любой нужный цвет. Объединим всё в одну программу и будем включать цвета на полную яркость поочерёдно:

#define R_PIN 6
#define G_PIN 5
#define B_PIN 3

void setup() {
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
}

void loop() {
  digitalWrite(R_PIN, 1);
  delay(500);
  digitalWrite(R_PIN, 0);
  digitalWrite(G_PIN, 1);
  delay(500);
  digitalWrite(G_PIN, 0);
  digitalWrite(B_PIN, 1);
  delay(500);
  digitalWrite(B_PIN, 0);
}

Примеры с GRGB


Для удобства задания цветов попробуем поработать с библиотекой:

Пространство RGB

Пример простого переключения основных цветов

#define R_PIN 6
#define G_PIN 5
#define B_PIN 3

#include <GRGB.h>
GRGB led(COMMON_CATHODE, R_PIN, G_PIN, B_PIN);

void setup() {  
}

void loop() {
  led.setRGB(255, 0, 0);  // установить красный
  delay(1000);
  led.setRGB(0, 255, 0);  // установить зелёный
  delay(1000);
  led.setRGB(0, 0, 255);  // установить синий
  delay(1000);
}
Цветовое колесо

В этом примере плавно меняются все цвета при помощи функции “цветового колеса”

#define R_PIN 6
#define G_PIN 5
#define B_PIN 3

#include <GRGB.h>
GRGB led(COMMON_CATHODE, R_PIN, G_PIN, B_PIN);

void setup() {  
}

void loop() {
  static byte count = 0;  // переменная "счётчик"
  led.setWheel8(count);   // ставим значение колеса (0-255)
  count++;                // за счёт использования типа byte переменная будет меняться от 0 до 255
  delay(50);              // задержка для плавности
}

Домашнее задание


  • Изучить возможности библиотеки GRGB
  • Попробовать другие цветовые режимы

 

Полезный пример?

Похожие примеры
Подписаться
Уведомить о
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии