RGB светодиод. Урок 8. Ардуино

RGB светодиоды
Необходимые компоненты
Необходимые компоненты

Привет! Мы много раз работали с обычными светодиодами, подключали их к Ардуино и программировали разные скетчи для управления. Но сегодня поговорим про особенный RGB светодиод.

В общем случае, RGB светодиод — это три простых цветных светодиода размещенных в общем корпусе.

В предыдущих уроках мы рассматривали подключение нескольких светодиодов и управление ими с помощью кнопок. На этот раз мы подключим к Ардуино RGB светодиод и будем им управлять. Так что, посмотрите предыдущие уроки, если вы пропустили их или уже забыли.

Последовательный порт. Урок 5. Ардуино

Разумеется, не забудем также и о подавлении дребезга кнопок.

Для того, чтобы выполнить этот урок нам понадобиться

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 4 Резистора номиналом 220 Ом
  • RGB Светодиод
  • Кнопка
  • Кабель USB

Как и в предыдущем уроке, мы будем переключать режим светодиода кнопкой. Но, на этот раз, будем использовать один светодиод вместо 4 и добавим несколько новых режимов. Использую RGB светодиод мы можем смешивать цвета в разных пропорциях, а в результате получать другие цвета и оттенки.

Разные RGB светодиоды
Разные RGB светодиоды

RGB Светодиоды

Существует несколько разновидностей RGB светодиодов:

  • элементы с общим катодом, которые управляются положительными сигналами, подаваемыми на аноды чипов. Такие элементы маркируются буквами CA;
  • с общим анодом. Команды на изменение режима работы идут на катоды элементов. Маркировка CC;
  •  собственной парой контактов для каждого кристалла (6 выводов).

В нашем распоряжении оказались три светодиода с общими катодами, так что подключим их по схеме с общим катодом. А каждый вывод анода соединим со своим контактом Ардуино последовательно с сопротивлением.

Принципиальная схема подключения RGB светодиода
Принципиальная схема подключения RGB светодиода

Как видно из схемы, кнопку мы подключили по уже знакомой схеме со стягивающим резистором. Мы рассматривали эту тему ранее, когда подключали кнопку к Ардуино в первый раз.

Программа и режимы

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

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 светодиоды и научились ими управлять с помощью кнопок и Ардуино. А в следующий раз попробуем запрограммировать кнопку более функционально.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *