Модуль KY-009 включает в себя красный, зеленый и синий светодиоды в одном корпусе для поверхностного монтажа. В сумме они образуют RGB светодиод, с помощью которого можно получать различные оттенки путем регулировки яркости каждого из трех цветов по отдельности. Яркость настраивается с помощью ШИМ. В случае с Arduino Uno/Nano за это отвечают только определенные цифровые выходы (смотрите маркировку). С помощью команды analogWrite устанавливается яркость Она состоит из двух параметров, один из которых — обозначает номер цифрового вывода, второй — значение яркости от 0 до 255. Включая цвета на разных мощностях их свечения можно получить уникальный оттенок в результате «смешивания».
Модуль RGB светодиода имеет общий катод (катоды всех трех светодиодов связаны вместе), который подключается к GND. Плюсовые контакты контакты красного, зеленого и синего светодиодов должны быть подключены к цифровым или ШИМ-выходам последовательно через токоограничительные резисторы.
Рекомендуемые значения резисторов зависят от напряжения логики контроллера. Для 5-вольтовых плат Ардуино подходящими будут номиналы от 110 до 220 Ом (см. распиновку ниже). Можно использовать и более высокие значения, но это приведет к снижению яркости.
Технические характеристики:
Ток потребления на одном компоненте светодиода: < 30мА
Напряжение для красного светодиода: 1.8…2.4 В
Напряжение для зеленого светодиода: 2.8…3.6 В
Напряжение для синего светодиода: 2.8…3.6 В
Размеры печатной платы: 20 х 15 мм
Распиновка модуля:
Схема подключения:
Программный код:
int redpin = 11; //select the pin for the red LED
int bluepin =10; // select the pin for the blue LED
int greenpin = 9;// select the pin for the green LED
int val;
void setup() {
pinMode(redpin, OUTPUT);
pinMode(bluepin, OUTPUT);
pinMode(greenpin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
for(val = 255; val > 0; val--)
{
analogWrite(redpin, val); //set PWM value for red
analogWrite(bluepin, 255 - val); //set PWM value for blue
analogWrite(greenpin, 128 - val); //set PWM value for green
Serial.println(val); //print current value
delay(1);
}
for(val = 0; val < 255; val++)
{
analogWrite(redpin, val);
analogWrite(bluepin, 255 - val);
analogWrite(greenpin, 128 - val);
Serial.println(val);
delay(1);
}
}