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