Вопрос о библиотеке IRremote.h
- Войдите на сайт для отправки комментариев
Сб, 15/12/2012 - 21:03
Суть вопроса:
Является ли нормальным поведение когда при нажатии кнопки первой декодированное посылкой является код кнопки, а потом при длительном нажатии идут декодированные данные вида "FFFFFFFF"
или в сиреал мониторе:
40BF906F
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
можно ли с помощью этой либы получать при длительном нажатии коды кнопок а не FFFFFFFF, или городить велосипеды для длительного нажатия?
Если не ошибаюсь, это нормально для протокола от NEC. Почитайте на sbprojects, там описаны протоколы.
UPD, я не ошибся, здесь, http://www.sbprojects.com/knowledge/ir/nec.php
Это особенность пульта и нужно не велосипед городить, а написать обработку длительного нажатия.
Посмотрел, таки как NEC определяется... эххх... а как было бы проще...
maksim, я так понимаю сохраняем данные если они не FFFFFFFF и смотрим прийдут ли FFFFFFFF в промежутке времени далее, померял дуиной получилось 107 мс, это с условием что приемник весит на одной дуине и шлет данные на другую...
Сохраните последний код и выдавайте себе этот код, если получили код повтора
Отвечу на свой вопрос:
#include <IRremote.h> long DU; int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(57600); irrecv.enableIRIn(); void loop() { if(irrecv.decode(&results)) { if(results.value != 4294967295) {DU=results.value;Serial.println(DU, HEX);} if(results.value == 4294967295) {Serial.println(DU, HEX);} dump(&results); irrecv.resume(); }Вместо 16 строки обычно пишут
else
а вместо 4294967295 обычно пишут
0xFFFFFFFF
Обычно пишут, но библиотека выдает коды в десяттичном виде а при отправке переводит в шеснадцатиричную систему Serial.println(results.value, HEX); , смысла особого небыло отдельно переводить в НЕХ и сравнивать, а потом отправлять, так в принцепе даже действий меньше происходит, про else согласен частенько забываю)
В библиотеке есть предопределенная константа REPEAT, нужно её и использовать, чтобы было понятно что это. Да и код более читабельным будет.
Библиотека не выдает ничего в десятичном или в шестнадцатеричном виде, в переменных всё хранится в двоичном виде. Другое дело, что для отображения мы преобразуем это значение в удобное для человека виде.
Все советы - условность, можете писать как Вам удобно.
А можно рабочий скетч?