Amateur Radio Station R9AL

      RGB светодиод фактически представляет собой три светодиода разных цветов (RGB - Red, Green, Blue - красный, зелёный, синий), объединённые в одном корпусе. При этом имеется возможность одновременно управлять интенсивностью каждого цвета независимо друг от друга и получать свечение любого оттенка.

Вот так выглядит RGB светодиод c выводами и диаметром линзы 5 мм:

У RGB светодиода четыре вывода, потому что светодиоды внутри него могут быть соединены либо по схему с общим анодом, либо по схеме с общим катодом. Вот так он может быть обозначен на схеме:


RGB-светодиод в Wokwi:

Соберем следующую схему:


Параллельно RGB-светодиоду подключены обычные монохромные светодиоды, и для наглядности все светодиоды на схеме подкрашены. Одиночные светодиоды нужны для того, чтобы понимать какие процессы происходят внутри RGB-светодиода. Токоограничительный резисторы (те, которые включены последовательно со светодиодами) номиналом 100 Ом.



Напишем программу, которая будет поочередно включать светодиоды как по отдельности, таки в разных сочетаниях:
void setup(){
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  
}
  
void loop(){

digitalWrite(11, 1); // зажигаем красный светодиод;  КРАСНЫЙ
delay(3000);

digitalWrite(9, 1); // зажигаем зеленый светодиод;   ЖЁЛТЫЙ
delay(3000);

digitalWrite(11, 0); // гасим красный светодиод;     ЗЕЛЕНЫЙ
delay(3000);

digitalWrite(10, 1); // зажигаем синий светодиод;    ГОЛУБОЙ
delay(3000);

digitalWrite(9, 0); // гасим зеленый светодиод;      СИНИЙ
delay(3000);

digitalWrite(11, 1); // зажигаем красный светодиод;  ФИОЛЕТОВЫЙ
delay(3000);

digitalWrite(9, 1); // зажигаем зеленый светодиод;   БЕЛЫЙ
delay(3000);

digitalWrite(9, 0); // гасим зеленый светодиод;
digitalWrite(10, 0); // гасим синий светодиод;
digitalWrite(11, 0); // гасим красный светодиод;
delay(3000);

}
Результатом работы программы будет последовательное переключение цветов:
  1. Красный (горит только красный светодиод)
  2. Желтый (горит красный и зеленый светодиод)
  3. Зеленый (горит только зеленый светодиод)
  4. Голубой (горит зеленый и синий светодиод)
  5. Синий (горит только синий светодиод)
  6. Фиолетовый (горит синий и красный светодиод)
  7. Белый (горят все светодиоды)
Всего семь цветов, которые получаются из трех основных цветов и их сочетаний. Это так называемый цветовой круг:



Почти радуга, не хватает только оранжевого цвета. Но мы можем создать и его, для этого нам надо смешать красный и зеленый свет но не поровну, иначе мы получим желтый, а в пропорции примерно 3 к 1. Т.е. нам нужно уменьшить яркость зеленого светодиода примерно в три раза. А мы уже знаем что проще всего это сделать с помощью ШИМ, например командой analogWrite:
analogWrite(9, 90); // зажигаем зеленый светодиод на 35%;
Полносью программа будет выглядеть так:
void setup(){
  pinMode(9, OUTPUT);   // СИНИЙ
  pinMode(10, OUTPUT);  // ЗЕЛЕНЫЙ
  pinMode(11, OUTPUT);  // КРАСНЫЙ
  
}
  
void loop(){

digitalWrite(11, 1); // зажигаем красный светодиод;   		КРАСНЫЙ
delay(300);

analogWrite(10, 90); // зажигаем зеленый светодиод на 35%;	ОРАНЖЕВЫЙ
delay(300);

digitalWrite(10, 1); // зажигаем зеленый светодиод;   		ЖЁЛТЫЙ
delay(300);

digitalWrite(11, 0); // гасим красный светодиод;     		ЗЕЛЕНЫЙ
delay(300);

digitalWrite(9, 1); // зажигаем синий светодиод;    		ГОЛУБОЙ
delay(300);

digitalWrite(10, 0); // гасим зеленый светодиод;      		СИНИЙ
delay(300);

digitalWrite(11, 1); // зажигаем красный светодиод;  		ФИОЛЕТОВЫЙ
delay(300);

digitalWrite(10, 1); // зажигаем зеленый светодиод;   		БЕЛЫЙ
delay(300);

digitalWrite(9, 0); // гасим синий светодиод;
digitalWrite(10, 0); // гасим зеленый светодиод;
digitalWrite(11, 0); // гасим красный светодиод;
delay(300);

}


В качестве практического задания:

Попробуйте изменить эту программу так, чтобы цвета менялись также плавно, но в обратном порядке, а начиналось чтобы все с зеленого цвета.





Copyright © R9AL 2026 Все права защищены
Рейтинг@Mail.ru