Главная » Ардуино » Управление Ардуино с помощью ИК пульта дистанционного управления телевизора

Управление Ардуино с помощью ИК пульта дистанционного управления телевизора

Инфракрасный пульт дистанционного управления сегодня можно найти в каждом доме. Будь то пульт дистанционного управления от телевизора, музыкального центра, или других устройств — все они передают определенные коды, мигая инфракрасным светодиодом.

Сегодня мы научим нашу Ардуино реагировать на такие коды с помощью библиотеки IRremote, доступной на GitHub.

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

Подключение

Подключите ИК-приемник в соответствии с datasheet. В моем случае распиновка VS1838B следующая:

Я подключил контакт SIGNAL к контакту 11 Ардуино. Напряжение питания для ик-приемника VS1838B 5В.

Кроме того, чтобы сигнализировать, что Ардуино действительно распознает нажатие кнопок на пульте дистанционного управления, я добавил два светодиода. Светодиоды будут переключаться в ответ на нажатие соответствующих кнопок. Эти светодиоды подключены через резисторы к контактам 2 и 3 Ардуино.

Чтение кодов кнопок ПДУ

Чтобы наш код правильно компилировался в IDE, загрузите библиотеку IRremote с GitHub и загрузите ее в каталог библиотек.

Теперь мы можем начать загрузку скетча в IDE Ардуино, который отправит коды нажатых кнопок в монитор последовательного порта.

#include <IRremote.h>
 const int receiverPin = 11;
 IRrecv irrecv(receiverPin);
 decode_results results;

void setup() {
  irrecv.enableIRIn();
}

void loop() {
  if(irrecv.decode(&results)) {
    Serial.print("0x");
    Serial.println(results.value, HEX);
    delay(250);
    irrecv.resume();
  }
}

После того, как мы загрузим скетч в Ардуино, мы можем запустить монитор последовательного порта и прочитать коды интересующих нас кнопок.

#include <IRremote.h>  const int receiverPin = 11;  IRrecv irrecv(receiverPin); decode_results results; void setup() {   irrecv.enableIRIn(); } void loop() {   if(irrecv.decode(&results)) {     Serial.print("0x");     Serial.println(results.value, HEX);     delay(250);     irrecv.resume();   } }

Ответ на коды

Полученный код кнопок форматируется библиотекой как число. По этой причине самый простой способ отреагировать на нажатие кнопки — использовать оператор Switch.

Итак, давайте заменим в коде, который у нас сейчас есть, фрагмент, отвечающий за отправку кода в Serial, на тот, который будет выполнять соответствующие действия, если код нажатой кнопки будет соответствовать одному из случаев.

void loop() {
 if(irrecv.decode(&results)) {
 switch(results.value) {
 case 0x20DF8E71: digitalWrite(greenPin, !digitalRead(greenPin)); break;
 case 0x20DFC639: digitalWrite(yellowPin, !digitalRead(yellowPin)); break;
}
irrecv.resume();
}
}

Как видите, после получения какого-либо из кодов соответствующий светодиод изменит свое состояние на противоположное текущему.

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

const  int yellowPin = 2;
const  int greenPin = 3;
void  setup () {
   pinMode (yellowPin, ВЫХОД );
   pinMode (greenPin, ВЫХОД );
   irrecv.enableIRIn ();
}

В конечном итоге весь наш код должен выглядеть так:

#include <IRremote.h>
const int receiverPin = 11;
const int yellowPin = 2;
const int greenPin = 3;
IRrecv irrecv(receiverPin);
decode_results results; 
void setup() {
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  irrecv.enableIRIn();
} 
void loop() {
  if(irrecv.decode(&results)) {
    switch(results.value) {
      case 0x20DF8E71: digitalWrite(greenPin, !digitalRead(greenPin)); break;
      case 0x20DFC639: digitalWrite(yellowPin, !digitalRead(yellowPin)); break;
    }
    irrecv.resume();
  }
}

После компиляции и загрузки в Ардуино мы можем все протестировать на практике 🙂

Как видите, использование инфракрасных пультов дистанционного управления с Ардуино очень просто и дешево (нам нужен всего лишь приемник, который можно найти почти в каждом доме).

Возможности такой системы огромны — от управления реле (например, включение / выключение света) до компьютерного управления (путем написания дополнительного приложения, которое будет получать соответствующие команды, например, через последовательный порт и выполнять определенные действия в системе).

Источник

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

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

*