цифровая электроника
вычислительная техника
встраиваемые системы

 

Управление RGB-светодиодом с помощью Arduino

Автор: Mike(admin) от 18-11-2017, 13:55

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


Управление RGB-светодиодом с помощью Arduino

RGB-светодиод (аббревиатура означает RED, GREEN, BLUE) является сочетанием кристаллов, способных генерировать красный, зеленый и синий цвета. Благодаря такому сочетанию данные светодиоды могут воспроизводить 16 миллионов оттенков света. Управлять RGB-светодиодами несложно, и они без проблем могут использоваться в проектах с Arduino. В данном материале будет показан пример управления RGB-светодиодом с помощью Arduino.


Поскольку RGB-светодиод, как было отмечено выше, является сочетанием кристаллов трех разных базовых цветов, то схемотехнически он изображается как три светодиода. Конструктивно такой светодиод имеет один общий вывод и три вывода для каждого цвета. Ниже показана схема подключения RGB-светодиода к Arduino. Также на схеме имеется буквенно-числовой ЖК-дисплей 16×2, потенциометры и последовательно соединенные с линиями RGB-светодиода резисторы. Эти резисторы (R1 = 100 Ом, R2 = 270 Ом, R3 = 330 Ом) ограничивают ток светодиодов, чтобы они не вышли из строя. Переменные резисторы (потенциометры) VR1-VR3 сопротивлением 10 КОм используются для управления интенсивностью свечения RGB-светодиода, то есть с помощью них можно задавать цвет светодиода, меняя интенсивность красного, зеленого и синего кристаллов. Потенциометр VR1 соединен с аналоговым входом A0, VR2 с аналоговым входом A1, а VR3 с аналоговым входом A2.


Управление RGB-светодиодом с помощью Arduino

ЖК-дисплей в данном случае используется для отображения значения цвета и шестнадцатеричного значения цветового кода. Значение цветового кода отображается в 1-й строке ЖК-дисплея (в виде Rxxx Gxxx Bxxx, где xxx представляет собой числовое значение), а шестнадцатеричный код отображается во 2-й строке ЖК-дисплея (в виде HEXxxxxxx). Резистор R4 сопротивлением 100 Ом применяется для ограничения тока, прикладываемого к подсветке ЖК-дисплея, а для регулировки контрастности ЖК-дисплея используется переменный резистор VR4 сопротивлением 10 КОм.


Ниже приведен код (скетч), позволяющий управлять изменением цвета RGB-светодиода с помощью платы Arduino и подключенными к ней потенциометрами.



#include <LiquidCrystal.h> // библиотека для ЖК-дисплея
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // линии Arduino для подключения ЖК-дисплея
int Radj;
int Gadj;
int Badj;
int Rval=0;
int Gval=0;
int Bval=0;
int R = 9;
int G = 10;
int B = 11;
void setup() {
pinMode(R, OUTPUT); // Линия 9 направлена на выход
pinMode(G, OUTPUT); // Линия 10 направлена на выход
pinMode(B, OUTPUT); // Линия 11 направлена на выход
lcd.begin(16,2); // Инициализация дисплея
delay(1);
lcd.setCursor(0,0);
lcd.print("RGB COLOUR");
lcd.setCursor(4,1);
lcd.print("GENERATOR");
delay(2000);
lcd.setCursor(0, 0);
lcd.print(" R    G    B   ");
lcd.setCursor(3,1);
lcd.print("HEX=      ");
}
 
void loop() {
Radj = analogRead(0);
Gadj = analogRead(1);
Badj = analogRead(2);
Rval=Radj/4; // Convert the range from (0-1023) to (0-255)
Gval=Gadj/4; // Convert the range from (0-1023) to (0-255)
Bval=Badj/4; // Convert the range from (0-1023) to (0-255)
lcd.setCursor(2,0);
if (Rval<10)
{
lcd.setCursor(2,0);
lcd.print("00");
lcd.print(Rval);
}
else if(Rval<100)
{
lcd.setCursor(2,0);
lcd.print("0");
lcd.print(Rval);
}
else
{
lcd.setCursor(2,0);
lcd.print(Rval);
}
lcd.setCursor(8,1);
if (Rval<16)
{
lcd.print("0");
lcd.print(Rval, 16);
}
else
{
lcd.print(Rval, 16);
}
lcd.setCursor(7,0);
if (Gval<10)
{
lcd.setCursor(7,0);
lcd.print("00");
lcd.print(Gval);
}
else if(Gval<100)
{
lcd.setCursor(7,0);
lcd.print("0");
lcd.print(Gval);
}
else
{
lcd.setCursor(7,0);
lcd.print(Gval);
}
lcd.setCursor(10,1);
if (Gval<16)
{
lcd.print("0");
lcd.print(Gval, 16);
}
else
{
lcd.print(Gval, 16);
}
lcd.setCursor(12,0);
if (Bval<10)
{
lcd.setCursor(12,0);
lcd.print("00");
lcd.print(Bval);
}
else if(Bval<100)
{
lcd.setCursor(12,0);
lcd.print("0");
lcd.print(Bval);
}
else
{
lcd.setCursor(12,0);
lcd.print(Bval);
}
lcd.setCursor(12,1);
if (Bval<16)
{
lcd.print("0");
lcd.print(Bval, 16);
}
else
{
lcd.print(Bval, 16);
}
analogWrite(R, Rval); // ШИМ-выход для красного цвета
analogWrite(G, Gval); // ШИМ-выход для зеленого цвета
analogWrite(B, Bval); // ШИМ-выход для синего цвета
}



© digitrode.ru


Теги: Arduino, светодиоды




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий