Привет! Мы много раз работали с обычными светодиодами, подключали их к Ардуино и программировали разные скетчи для управления. Но сегодня поговорим про особенный RGB светодиод.
В общем случае, RGB светодиод — это три простых цветных светодиода размещенных в общем корпусе.
Содержание
- Для того, чтобы выполнить этот урок нам понадобиться
- RGB Светодиоды
- Программа и режимы
- Полный текст программы
- Заключение
В предыдущих уроках мы рассматривали подключение нескольких светодиодов и управление ими с помощью кнопок. На этот раз мы подключим к Ардуино RGB светодиод и будем им управлять. Так что, посмотрите предыдущие уроки, если вы пропустили их или уже забыли.
Последовательный порт. Урок 5. Ардуино
Разумеется, не забудем также и о подавлении дребезга кнопок.
Для того, чтобы выполнить этот урок нам понадобиться
- Ардуино UNO
- Макетная плата
- Перемычки
- 4 Резистора номиналом 220 Ом
- RGB Светодиод
- Кнопка
- Кабель USB
Как и в предыдущем уроке, мы будем переключать режим светодиода кнопкой. Но, на этот раз, будем использовать один светодиод вместо 4 и добавим несколько новых режимов. Использую RGB светодиод мы можем смешивать цвета в разных пропорциях, а в результате получать другие цвета и оттенки.
RGB Светодиоды
Существует несколько разновидностей RGB светодиодов:
- элементы с общим катодом, которые управляются положительными сигналами, подаваемыми на аноды чипов. Такие элементы маркируются буквами CA;
- с общим анодом. Команды на изменение режима работы идут на катоды элементов. Маркировка CC;
- собственной парой контактов для каждого кристалла (6 выводов).
В нашем распоряжении оказались три светодиода с общими катодами, так что подключим их по схеме с общим катодом. А каждый вывод анода соединим со своим контактом Ардуино последовательно с сопротивлением.
Как видно из схемы, кнопку мы подключили по уже знакомой схеме со стягивающим резистором. Мы рассматривали эту тему ранее, когда подключали кнопку к Ардуино в первый раз.
Программа и режимы
При нажатии на кнопку, в программе будут переключаться режимы светодиодов. Для этого напишем функцию, которая будет принимать на вход состояние счетчика и зажигать светодиод определенным образом.
void setMode(int mode){
if (mode == 1){ // только красный
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}else if (mode == 2){ // только зеленый
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}else if (mode == 3){ // только синий
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}
}
Добавим еще несколько режимов смешивания цветов для того, чтобы получить разные оттенки. В результате мы увидим на что способен RGB светодиод и почему их так часто используют в современных источниках освещения.
Вы можете и сами дописать любые режимы для светодиода и даже использовать возможности ШИМ пинов Ардуино, чтобы плавно изменять цвета.
Полный текст программы
const int buttonPin=2;
boolean lastButtonState = LOW;
boolean buttonState = LOW;
int RLED = 9;
int GLED = 10;
int BLED = 11;
int ledMode = 0;
void setup(){
Serial.begin(9600);
pinMode (buttonPin , INPUT);
pinMode(RLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(BLED, OUTPUT);
}
void setMode(int mode){
if (mode == 1){
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}else if (mode == 2){
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
}else if (mode == 3){
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
}else if (mode == 4){
analogWrite(RLED, 127);
analogWrite(GLED, 0);
analogWrite(BLED, 127);
}else if (mode == 5){
analogWrite(RLED, 0);
analogWrite(GLED, 127);
analogWrite(BLED, 127);
}else if (mode == 6){
analogWrite(RLED, 127);
analogWrite(GLED, 127);
analogWrite(BLED, 0);
}else if (mode == 7){
analogWrite(RLED, 85);
analogWrite(GLED, 85);
analogWrite(BLED, 85);
}else{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
}
boolean debounce(boolean last){
boolean current = digitalRead(buttonPin );
if (last != current){
delay(3);
current = digitalRead(buttonPin );
return current;
}
}
void loop(){
buttonState = debounce(lastButtonState);
if (lastButtonState == LOW && buttonState == HIGH){
ledMode++;
if (ledMode == 8){
ledMode = 0;
}
setMode( ledMode );
}
lastButtonState = buttonState;
}
Заключение
Мы рассмотрели еще один тип светодиодов, RGB светодиоды и научились ими управлять с помощью кнопок и Ардуино. А в следующий раз попробуем запрограммировать кнопку более функционально.
Спасибо, что дочитали статью до конца.
Пожалуйста, подписывайтесь на блог в яндекс дзен.
Посмотрите больше уроков и проектов на сайте arcadepub.ru
И подписывайтесь на соц. сети.
Спасибо за внимание, скоро увидимся.