RGB светодиод - разновидность светодиода, в котором в одном корпусе заключены три разноцветных светодиода (красный, зеленый, синий). С помощью модуля RGB светодиода вы сможете создать многоцветную индикацию различных событий, используя всего лишь один модуль. Каждым цветом светодиода можно управлять по отдельности или смешивать их вместе, получая различные дополнительные цвета. А регулируя интенсивность цветов с помощью аналогового сигнала можно получить практически любой оттенок цвета.
Для надежной работы светодиода на плате предусмотрены токоограничивающие резисторы.
Путём сочетания включенного свечения основных цветов, можно получать вспомогательные (смотрите таблицу ниже):
Красный | Зелёный | Синий | Результат |
---|---|---|---|
+ | - | - | красный |
- | + | - | зелёный |
- | - | + | синий |
+ | + | - | жёлтый |
+ | - | + | сиреневый |
- | + | + | голубой |
+ | + | + | белый |
Помимо этого, контакты модуля можно подключить к выводам контроллера, поддерживающим ШИМ. Таким образом можно получать новые цвета, путём смешения различной интенсивности свечения каждого цвета.
Все эти возможности модуля продемонстрированы в примерах ниже.
Описание примера: В примере иллюстрируется подключение модуля к контроллеру, и попеременное включение разных цветов: зеленый, красный, синий. (Примеры тестировались на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor shield | 1 |
Модуль RGB-светодиода | 1 |
Провода "мама - мама" | 4 |
Схема подключения:
Скетч для загрузки:
//установка переменных выводов светодиодов
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() {
//выключить всё
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);
}
Описание примера: Если цвета зажигать не только поочерёдно, но и комбинировать их одновременное включение, можно получить помимо трёх основных цветов (красный, зелёный, синий), вспомогательные, такие как жёлтый, сиреневый (фиолетовый), голубой, белый.
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor shield | 1 |
Модуль RGB-светодиода | 1 |
Провода "мама - мама" | 4 |
Схема подключения:
Скетч для загрузки:
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)); //чтение первого бита (самого младшего, тот что справа, синий)
}
Описание Если модуль подключен к выводам поддерживающим ШИМ, то можно получать различные цвета, сочетанием уровня свечения каждого цвета. Для демонстрации этой возможности, будем подавать на каждый контакт случайное значение от 0 до 255. Таким образом в сочетании трёх свечений цветов, будет появляться общий цвет свечения.
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Sensor shield | 1 |
Модуль RGB-светодиода | 1 |
Провода "мама - мама" | 4 |
Схема подключения:
Скетч для загрузки:
//выводы по цветам
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); //зафиксируем цвет на секунду
}