Управление устройством по длительности нажатия кнопки на ИК пульте.

CrzmN
Offline
Зарегистрирован: 16.09.2014

Добрый день! Никак не могу осуществить задумку: оставлять включенным, например, светодиод, пока нажата кнопка на пульте. По сути, главная проблема в том, что не могу разобраться с работой самой библеотеки IRremote. Не понимаю как обрабатывается входящий сигнал. 
Я вижу, что на входе приемника остается значения с последнего принятого сигнала и меняется только при нажатии другой кнопки. Мучаю вот этот код. Вторая трочка, если честно, совсем не понятна, написал её по аналогии с демками из библиотеки. 

#include <IRremote.h>
#define LED 9
int RECV_PIN = 39;
int NUM=0;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(LED,OUTPUT);
}

void loop() {
  NUM=results.value;
  if (irrecv.decode(&results)){
            irrecv.resume(); // Receive the next value
   } 
 NUM=results.value;
   if(results.value==2064){
    digitalWrite(LED,HIGH);
     } else {
    digitalWrite(LED,LOW);   
  }
    Serial.print(NUM);
    Serial.print("   ");
    Serial.println(results.value);
}

Пробовал выводить значение в переменную NUM и с её помощью задавать условие, но ничего путного не добился, та же проблема. Конечно, можно пойти напролом и выключать его по нажатии другой кнопки, но интересует именно чтобы он горял, пока нажата кнопка. Кто-нибудь может подсказать правильный путь? Так же буду благодарен за объяснении работы IR библиотеки. 

CrzmN
Offline
Зарегистрирован: 16.09.2014

Извиняюсь, не понятна, конечно же, не вторая строка. Седьмая непонятна - decode_results results;

art100
Offline
Зарегистрирован: 09.03.2014

зря вы это затеяли боротся с повторами

в этом суть вечно теряющихся команд 

надо набрать хоть 3 штуки подряд чтоб быть уверенным что распознали верно

Помнится в Горизонт-ах Philips-ах отсчет 3-ех раз был и если совпали команды только тогда 1-ин раз выполнять.

В видоемагнитофонах с лентой это вообще было жесткое правило.