Вопрос о библиотеке 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 мс, это с условием что приемник весит на одной дуине и шлет данные на другую...
Сохраните последний код и выдавайте себе этот код, если получили код повтора
Отвечу на свой вопрос:
Вместо 16 строки обычно пишут
else
а вместо 4294967295 обычно пишут
0xFFFFFFFF
Обычно пишут, но библиотека выдает коды в десяттичном виде а при отправке переводит в шеснадцатиричную систему Serial.println(results.value, HEX); , смысла особого небыло отдельно переводить в НЕХ и сравнивать, а потом отправлять, так в принцепе даже действий меньше происходит, про else согласен частенько забываю)
В библиотеке есть предопределенная константа REPEAT, нужно её и использовать, чтобы было понятно что это. Да и код более читабельным будет.
Библиотека не выдает ничего в десятичном или в шестнадцатеричном виде, в переменных всё хранится в двоичном виде. Другое дело, что для отображения мы преобразуем это значение в удобное для человека виде.
Все советы - условность, можете писать как Вам удобно.
А можно рабочий скетч?