====== Модуль RGB-светодиода ======
===== Описание =====
RGB светодиод - разновидность светодиода, в котором в одном корпусе заключены три разноцветных светодиода (красный, зеленый, синий). С помощью модуля RGB светодиода вы сможете создать многоцветную индикацию различных событий, используя всего лишь один модуль. Каждым цветом светодиода можно управлять по отдельности или смешивать их вместе, получая различные дополнительные цвета. А регулируя интенсивность цветов с помощью аналогового сигнала можно получить практически любой оттенок цвета.

Для надежной работы светодиода на плате предусмотрены токоограничивающие резисторы.

Путём сочетания включенного свечения основных цветов, можно получать вспомогательные (смотрите таблицу ниже):
^ Красный  ^ Зелёный  ^ Синий  ^ Результат  ^
| +        | -        | -      | красный    |
| -        | +        | -      | зелёный    |
| -        | -        | +      | синий      |
| +        | +        | -      | жёлтый     |
| +        | -        | +      | сиреневый  |
| -        | +        | +      | голубой    |
| +        | +        | +      | белый      |

Помимо этого, контакты модуля можно подключить к выводам контроллера, поддерживающим ШИМ. Таким образом можно получать новые цвета, путём смешения различной интенсивности свечения каждого цвета. 

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

==== Технические характеристики ====
  * Основные цвета: красный, зеленый, синий
  * Максимальный потребляемый ток: 40 мА
  * Рабочее напряжение: 3,3 - 5 В
  * Видимый угол: 120°

==== Физические размеры ====
  * Модуль (Д х Ш х В): 30 х 20 х 7 мм

==== Плюсы использования ====
  * Заменяет несколько светодиодов
  * Возможно создание новых цветов
  * Модуль прост в подключении
  * Не требуется пайка резисторов (модуль содержит необходимые резисторы)

==== Минусы использования ====
  * Дороже обычного RGB-светодиода

==== Смотрите также ====
  * [[main:comm:esp12_server_rgb|Управление модулем RGB-светодиода через интернет]]
  * [[main:modules:encoder#управление_RGB-светодиодом|Управление модулем RGB-светодиода с помощью энкодера]]

===== Примеры подключения и использования =====
==== Попеременное включение основных цветов ====
**Описание примера:** В примере иллюстрируется подключение модуля к контроллеру, и попеременное включение разных цветов: зеленый, красный, синий. (Примеры тестировались на контроллере Smart UNO)

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                   |  1           |
| [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]]                   |  1           |
| [[https://smartelements.ru/collection/moduli/product/modul-rgb-svetodioda-3|Модуль RGB-светодиода]]                   |  1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода "мама - мама"]]  |  4      |


**Схема подключения:**
{{ :главная:модули:модуль_rgb_светодиода_н.png?nolink |}}

**Скетч для загрузки:**
<file Arduino>
//установка переменных выводов светодиодов
const int greenLed = 9;
const int redLed = 10;
const int blueLed = 11;

void setup() {
  //установка режимов пинов
  pinMode(greenLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
}

void loop() {

  //выключить всё
  digitalWrite(greenLed, HIGH);
  digitalWrite(redLed, HIGH);
  digitalWrite(blueLed, HIGH);
  delay(1000);

  //зеленый
  digitalWrite(greenLed, LOW);
  delay(1000);
  digitalWrite(greenLed, HIGH);
  delay(1000);

  //красный
  digitalWrite(redLed, LOW);
  delay(1000);
  digitalWrite(redLed, HIGH);
  delay(1000);

  //синий
  digitalWrite(blueLed, LOW);
  delay(1000);
  digitalWrite(blueLed, HIGH);
}
</file>


==== Попеременное включение комбинации цветов ====
**Описание примера:** Если цвета зажигать не только поочерёдно, но и комбинировать их одновременное включение, можно получить помимо трёх основных цветов (красный, зелёный, синий), вспомогательные, такие как жёлтый, сиреневый (фиолетовый), голубой, белый. 

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                   |  1           |
| [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]]                   |  1           |
| [[https://smartelements.ru/collection/moduli/product/modul-rgb-svetodioda-3|Модуль RGB-светодиода]]                   |  1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода "мама - мама"]]  |  4      |


**Схема подключения:**
{{ :главная:модули:модуль_rgb_светодиода_н.png?nolink |}}

**Скетч для загрузки:**
<file Arduino>
byte colors[] = {        //массив цветов RGB
                  0b000, //ничего не горит
                  0b001, //синий
                  0b010, //зелёный
                  0b011, //зелёный + синий = голубой
                  0b100, //красный
                  0b101, //красный + синий = сиреневый (фиолетовый)
                  0b110, //красный + зелёный = жёлтый
                  0b111  //красный + зелёный + синий = белый
                };

//выводы по цветам
const int redLed = 9;
const int greenLed = 10;
const int blueLed = 11;

void setup() {
  //установка режимов выводов
  pinMode(greenLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
}

void loop() {
  //показать цвета поочереди
  for (int i = 0; i < 9; i++) {
    lightColor(colors[i]); //показать текущий цвет
    delay(2000); //задержка на 2 секунды
  }
}

/* Процедура зажигает очередной цвет из массива
 */
void lightColor(const byte& color) {
  digitalWrite(redLed, bitRead(color, 2)); //чтение третьего бита (самого старшего, тот что слева, красный)
  digitalWrite(greenLed, bitRead(color, 1)); //чтение третьего бита (самого старшего, тот что посередине, зелёный)
  digitalWrite(blueLed, bitRead(color, 0)); //чтение третьего бита (самого старшего, тот что справа, синий)
}
</file>

==== Светомузыка. Включение случайного цвета ====
**Описание** Если модуль подключен к выводам поддерживающим ШИМ, то можно получать различные цвета, сочетанием уровня свечения каждого цвета. Для демонстрации этой возможности, будем подавать на каждый контакт случайное значение от 0 до 255. Таким образом в сочетании трёх свечений цветов, будет появляться общий цвет свечения.

^ Что нужно                                                                                                               ^ Кол-во, шт  ^
| [[http://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]                   |  1           |
| [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]]                   |  1           |
| [[https://smartelements.ru/collection/moduli/product/modul-rgb-svetodioda-3|Модуль RGB-светодиода]]                   |  1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода "мама - мама"]]  |  4      |


**Схема подключения:**
{{ :главная:модули:модуль_rgb_светодиода_н.png?nolink |}}

**Скетч для загрузки:**
<file Arduino>
//выводы по цветам
const int redLed = 9;
const int greenLed = 10;
const int blueLed = 11;

void setup() {
  //установка режимов выводов
  pinMode(greenLed, OUTPUT);
  pinMode(redLed, OUTPUT);
  pinMode(blueLed, OUTPUT);
}

void loop() {
  analogWrite(redLed, random(256)); //зажечь случайное значение красного оттенка
  analogWrite(greenLed, random(256)); //зажечь случайное значение зелёного оттенка
  analogWrite(blueLed, random(256)); //зажечь случайное значение синего оттенка 
  delay(1000); //зафиксируем цвет на секунду
}
</file>

