Ураааааааа !!!
Arduino рулит.
Использование этого устройства можно как в составе умного дома, автомобиля, домашнего кинотеатра и т.д.
И так все по порядку:
Желательно использовать приемник 36кГц - 40кГц
Лично я выпаял с какой то старой платы IR приемник
Похож на этот
Его параметры мне не известны , но он работает.
Из доступных и не дорогих это TSOP1736, TSOP1738
Можно подключить ИК приемник на разъем программирования. При подключении обратите внимание на цоколевку ИК приемника в DataSheet.
Без фильтра питания IR работал не стабильно с пропуском посылок , дабавил в схеме RC фильтр и все нормализовалось.
Далее:
Установил библиотеку IRremote для Arduino, подправил и залил код, все заработало сразу. Перепробовал все пульты в доме , работает со всеми мной протестироваными пультами Д.У.
Скачать программу , для назначения кнопок ДУ . Сначала нужно запустить IRKey_config.exe назначить кнопки вашего ифракрасного пульта дистанционного управления, на любые клавиши Windows. Следует помнить что Windows не разрешает эмуляцию комбинации "CTRL-ALT-DEL" , вместо нее можно использовать комбинацию "CTRL+SHIFT+ESC"). После того как вы все сконфигурировали, сохраните настройки, закройте программу IRKey_config.exe и запустите IRKey.exe (программа при запуске свернется в трей) , наслаждайтесь. Для постоянного использования ярлык программы IRKey.exe закинте в автозагрузку
Скачать библиотеку , распаковать и положить в папку C:\arduino-0017\hardware\libraries\IRremote
Код с повторами при удерживании кнопки
Для нарульных пультов Pioneer , delay уменишить до оптимального значения
Или использовать код выложеный выше
PHP код:
// http://compcar.ru
#include <IRremote.h>
byte bytes[4];
int RECV_PIN = 10; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long ir_dt, old_ir;
void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // включить приемник
}
void loop() {
if (irrecv.decode(&results))
{
if (results.value > 0 && results.value < 0xFFFFFFFF)
{
ir_dt = results.value;
bytes[0] = ir_dt & 0xFF; // преобразовать в 4-байта
bytes[1] = (ir_dt & 0xFF00) >> 8;
bytes[2] = (ir_dt & 0xFF0000) >> 16;
bytes[3] = (ir_dt & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
if (old_ir == ir_dt){delay(250);} //Пауза между короткими нажатиями
else {delay(500);}// Пауза после первого нажатия и удержания(перед повторами)
old_ir = ir_dt;
}
if (results.value == 0xFFFFFFFF )
{
delay(120); //пауза между повторами
Serial.write( bytes,4);
}
irrecv.resume();
}
}
Код для Arduino без повторов при удерживании кнопки
PHP код:
// http://compcar.ru
#include <IRremote.h>
byte bytes[4];
int RECV_PIN = 10; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(115200);
irrecv.enableIRIn(); // включить приемник
}
void loop() {
if (irrecv.decode(&results))
{
if ((results.value > 0) && (results.value < 0xFFFFFFFF))
{
unsigned long res_dt = results.value;
bytes[0] = res_dt & 0xFF; // преобразовать в 4-байта
bytes[1] = (res_dt & 0xFF00) >> 8;
bytes[2] = (res_dt & 0xFF0000) >> 16;
bytes[3] = (res_dt & 0xFF000000) >> 24;
Serial.write( bytes,4); // отправить прочитаное значение компьютеру
}
irrecv.resume();
}
}
Пульты которые цепляется на руль и гарантированно работают.
В отличаи от IR-Link кнопки телефона в пульте Pioneer назначаются каждая кнопка со своим сканкодом.
Если у Вас клавиатура не имеет мультимедийных или прочих клавиш , то вы можете воспользоватся таблицей что бы добавить нужные клавиши в фаил config.txt в ручную.
За таблицу спасибо Serg_w и Allex.