Всем привет! С данной статьи хочу начать серию публикаций о различной электронике и самоделках на ее основе.
Сегодня мы поговорим о RGB светодиоде. А так же напишем небольшой скетч, для плавного изменения его цвета от красного до фиолетового, с помощью переменного резистора (потенциометра) на 10кОм и Arduino UNO.
RGB светодиод – это сразу три светодиода в одном: красный, зеленый и синий. Т.е. как раз те три цвета, при различном сочетании и интенсивности свечения которых можно получить все остальные цвета видимого спектра. У RGB светодиода 4 ножки – самая длинная – общая. В зависимости от модели светодиода, это может быть либо катод, либо анод. А 3 остальные – это либо аноды, либо катоды трех разных цветов.
Проверить чем является общая ножка катодом или анодом очень просто – если общая ножка катод, то при подключении к ней минуса источника питания, а плюса (через резистор) к любой другой ножке, светодиод загорится соответствующим цветом. Если не загорается, значит общая ножка – анод, и подключать к ней нужно плюс источника питания.
Приступим к созданию схемы на макетной плате. В качестве микроконтроллера будем использовать Arduino UNO. Подключаем общую ножку светодиода к выходу GND Ардуино. А оставшиеся три ножки к цифровым портам Ардуино. Ножку, отвечающую за красный цвет, к порту номер 8, за синий - к порту номер 9, за зеленый - к порту 10. Добавляем на схему потенциометр и соединяем его первую ножку с портом GND Ардуино, центральную ножку номер 2 соединяем с аналоговым портом А0 Ардуино, а ножку номер 3 с выходом 5В Ардуино.
В интернете находим таблицу RGB-цветов радуги, и переносим эту информацию в таблицу (MS Excel, Open Office) и определяем полный интервал значений для изменения цветности светодиода по всем цветам радуги. Он составляет 1530.
В среде разработки Arduino IDE пишем скетч для управления свечения светодиодом. Определяем постоянные, связанные с цифровыми портами Ардуино, через которые мы будем управлять цветом светодиода и с аналоговым портом А0, через который мы будем снимать значение с потенциометра. Добавим небольшую функцию для удобства работы с rgb-светодиодом. В качестве параметров, функция будет получать значения переменных и отправлять эти значения в соответствующий порт Ардуино.
(необходимо поставить символ решетки перед define)
define A0 0
define R9 9
define G10 10
define B11 11
int val;
int newVal;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(R9, OUTPUT);
pinMode(G10, OUTPUT);
pinMode(B11, OUTPUT);
}
void rgb (int red, int green, int blue){
analogWrite (R9, red);
analogWrite (G10, green);
analogWrite (B11, blue);
}
При вращении регулятора потенциометра из крайнего левого положения в крайне правое, уменьшается его сопротивление от номинала (10кОм) до значения близкого к 0. При этом напряжение линейно увеличивается от нуля, до напряжения выдаваемого соответствующим пином Ардуино, т.е. около 5 В. Стандартная для Arduino IDE функция analogRead преобразует передаваемое в порт А0 напряжение в цифровой интервал от 0 (при нулевом напряжении) до 1023 (при максимальном напряжении). Т.к. полный интервал регулирования цветности светодиода составляет 1530, то с помощью стандартной для Arduino IDE функции map расширяем интервал возможных значение переменной val до 1530.
Далее идет блок условий, в котором при достижении определенных значений переменной связанной с потенциометром, меняется интенсивность каждого из трех цветов RGB-светодиода.
void loop() {
// put your main code here, to run repeatedly:
val = analogRead (A0);
newVal=map(val, 0, 1023, 0, 1530);
if (newVal<=255){//красный
rgb (newVal,0,0);
} else if ((newVal>255)&&(newVal<=510)){//оранжевый и желтый
rgb (255,newVal-255,0);
} else if ((newVal>510)&&(newVal<=765)) {//зеленый
rgb (765-newVal,255,0);
}else if ((newVal>765)&&(newVal<=1020)) {//голубой
rgb (0,255,newVal-765);
}else if ((newVal>1020)&&(newVal<=1275)) {//синий
rgb (0,1275-newVal,255);
}else if ((newVal>1275)&&(newVal<=1530)) {//фиолетовый
rgb (newVal-1275,0,255);
}
Serial.println (newVal);
delay (1000);
}
Подключаем Ардуино к компьютеру и загружаем скетч. Теперь плавно поворачивая ручку потенциометра, меняем цвет rgb-светодиода от красного, через оранжевый, желтый, зеленый, голубой и синий, к фиолетовому цвету. Подобный принцип управления можно применить к цветным led-экранам и матрицам.
Ниже размещено видео, где наглядно продемонстрировано всё, о чем говорилось в статье. Спасибо, что дочитали до конца! Всем пока!
Ссылка на скетч - https://disk.yandex.ru/d/E-ZcMLgEYLQfdA
#rgb #светодиод #ардуино #arduino #потенциометр