Подключение IR приемника к Arduino, проблема с кнопкой.
- Войдите на сайт для отправки комментариев
Привет, Друзья! Вот сел разбиратся с подключением ИК приемника к Arduino, первая статья в интеренете, взял оттуда код и залил на плату. Схема у меня простая лампочка и резистор. Задача чтоб пультом включать и выключать светодиод. Хотел вкл/выкл одной кнопкой пульта, но не тут то было. Светодиод не горит. Если назначить одну кнопку для включения другую для выключения так работает. Хочется место на пульте сэкономить. Кто знающий и умеет так делать подскажите нужен ваш совет!
<<< сам пульт
И еще сериал порт при нажатии кнопок, подсовывает дополнительный сигнал. Такой же есть и на похожем китайском пульте. Но при условии если кнопка длительно зажимается. А если нажимать короткими тычками то код сигнала один и тот же.
Это я нажимаю кнопку 1.
Вот такой код не работает:
#include <IRremote.h> // подключаем библиотеку для IR приемника IRrecv irrecv(A0); // указываем пин, к которому подключен IR приемник decode_results results; void setup() // процедура setup { irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала pinMode(2, OUTPUT); // пин 13 будет выходом (англ. «output») pinMode(A0, INPUT); // пин A0 будет входом (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void IR_remote () { if (irrecv.decode(&results)) // если данные пришли выполняем команды { Serial.println(results.value); // отправляем полученные данные на порт if (results.value == 16718055) { digitalWrite(2, HIGH); } if (results.value == 16718055) { digitalWrite(2, LOW); } irrecv.resume(); // принимаем следующий сигнал на ИК приемнике } } void loop() // процедура loop { IR_remote (); }
Вот такой код работатет, потому что кнопки вкл и выкл разные:
#include <IRremote.h> // подключаем библиотеку для IR приемника IRrecv irrecv(A0); // указываем пин, к которому подключен IR приемник decode_results results; void setup() // процедура setup { irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала pinMode(2, OUTPUT); // пин 13 будет выходом (англ. «output») pinMode(A0, INPUT); // пин A0 будет входом (англ. «intput») Serial.begin(9600); // подключаем монитор порта } void IR_remote () { if (irrecv.decode(&results)) // если данные пришли выполняем команды { Serial.println(results.value); // отправляем полученные данные на порт if (results.value == 16724175) { digitalWrite(2, HIGH); } if (results.value == 16718055) { digitalWrite(2, LOW); } irrecv.resume(); // принимаем следующий сигнал на ИК приемнике } } void loop() // процедура loop { IR_remote (); }
И все таки главный вопрос как включать и выключать светодиод одной кнопкой пульта. Любая информация по теме будет полезна. Спасибо за внимание)
Благодарю, DetSimen! Код работает.
Не могли бы вы пояснить суть конструкции:
Да, я не такой продвинутый поэтому не понял конструкцию и заметил что и без нее работает)
это чтоб не опрашивать IR датчик чаще 200 миллисекунд.
Понял. Спасибо приятель!