Вы находитесь тут

Использование произвольного ИК ПДУ с Arduino

Тэги: 
Категории: 

Подобный вопрос неоднократно всплывает в различных сообществах посещаемых мной и я решил дать на него развернутый ответ.

Нам потребуется:

  • Arduino Nano
  • приемник ИК сигнала vs1838
  • библиотека IRLremote
  • библиотека IRremote
  • IDE Arduino или PlatformIO

Выход  ИК приемника VS1838 (или подобного) необходимо подключать ко входу на котором есть аппаратное прерывание для Arduino Nano это D2 или D3.

Скетчь загружаем как обычно:


#define IR_PIN 3 // указываем вывод, к которому подключен приемник


#include "IRLremote.h"
CHashIR IRLremote;
uint32_t IRdata;



void setup()
{
Serial.begin(9600);
IRLremote.begin(IR_PIN); // запускаем прием
Serial.println("Start devis");
}
void loop() {
if ( IRLremote.available()) { // если данные пришли
auto data = IRLremote.read();
IRdata = data.command;

Serial.println(IRdata, HEX);
Serial.println("Next cycle");
switch ( IRdata ) {
case 0xFFA25D:
Serial.println("CH-");
break;
case 0xFFE21D :
Serial.println("CH++");
break;
}

}
}

 

Далее открываем терминал вашего IDE и смотрим коды поступающие при нажатии кнопк пульта.

Составляем таблицу такого плана:

// ----- КНОПКИ ПУЛЬТА -----WavGAT
#define BUTT_UP 0xF39EEBAD
#define BUTT_DOWN 0xC089F6AD
#define BUTT_LEFT 0xE25410AD
#define BUTT_RIGHT 0x14CE54AD
#define BUTT_OK 0x297C76AD
#define BUTT_1 0x4E5BA3AD
#define BUTT_2 0xE51CA6AD
#define BUTT_3 0xE207E1AD
#define BUTT_4 0x517068AD
#define BUTT_5 0x1B92DDAD
#define BUTT_6 0xAC2A56AD
#define BUTT_7 0x5484B6AD
#define BUTT_8 0xD22353AD
#define BUTT_9 0xDF3F4BAD
#define BUTT_0 0xF08A26AD
#define BUTT_START 0x68E456AD
#define BUTT_HASH 0x151CD6AD
// ----- КНОПКИ ПУЛЬТА -----

Или такую:

// ----- КНОПКИ ПУЛЬТА KEYES -----
#if IR_RCT == 2
#define BUTT_UP 0xE51CA6AD
#define BUTT_DOWN 0xD22353AD
#define BUTT_LEFT 0x517068AD
#define BUTT_RIGHT 0xAC2A56AD
#define BUTT_OK 0x1B92DDAD
#define BUTT_1 0x68E456AD
#define BUTT_2 0xF08A26AD
#define BUTT_3 0x151CD6AD
#define BUTT_4 0x18319BAD
#define BUTT_5 0xF39EEBAD
#define BUTT_6 0x4AABDFAD
#define BUTT_7 0xE25410AD
#define BUTT_8 0x297C76AD
#define BUTT_9 0x14CE54AD
#define BUTT_0 0xC089F6AD
#define BUTT_START 0xAF3F1BAD
#define BUTT_HASH 0x38379AD
#endif
// ----- КНОПКИ ПУЛЬТА KEYES -----

Или такую:

// ----- КНОПКИ ПУЛЬТА CAR mp3 -----
/* #define BUTT_UP 0xE207E1AD // CH+
#define BUTT_DOWN 0x4E5BA3AD // CH-
#define BUTT_LEFT 0x517068AD // <<
#define BUTT_RIGHT 0x1B92DDAD // >>
#define BUTT_OK 0xDF3F4BAD // EQ
#define BUTT_1 0x18319BAD // 1
#define BUTT_2 0xF39EEBAD // 2
#define BUTT_3 0x4AABDFAD // 3
#define BUTT_4 0xE25410AD // 4
#define BUTT_5 0x297C76AD // 5
#define BUTT_6 0x14CE54AD // 6
#define BUTT_7 0xAF3F1BAD // 7
#define BUTT_8 0xC089F6AD // 8
#define BUTT_9 0x38379AD // 9
#define BUTT_0 0x68E456AD // ноль
#define BUTT_START 0xAC2A56AD // >||
#define BUTT_HASH 0x151CD6AD
*/

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

Стоит обратить внимание на комментарии к библиотеке Arduino-IRremote.

Если коротко то вам необходимо самостоятельно позаботиться о разрешении конфликтов прерываний при работе с ИК ПДУ, АЦП и др.

 

 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer