Управление устройством по длительности нажатия кнопки на ИК пульте.
- Войдите на сайт для отправки комментариев
Добрый день! Никак не могу осуществить задумку: оставлять включенным, например, светодиод, пока нажата кнопка на пульте. По сути, главная проблема в том, что не могу разобраться с работой самой библеотеки 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 библиотеки.
Извиняюсь, не понятна, конечно же, не вторая строка. Седьмая непонятна - decode_results results;
зря вы это затеяли боротся с повторами
в этом суть вечно теряющихся команд
надо набрать хоть 3 штуки подряд чтоб быть уверенным что распознали верно
Помнится в Горизонт-ах Philips-ах отсчет 3-ех раз был и если совпали команды только тогда 1-ин раз выполнять.
В видоемагнитофонах с лентой это вообще было жесткое правило.