IRremote interrupt
- Войдите на сайт для отправки комментариев
Доброе время суток.
Начал разбираться с ардуиной уно. Написал небольшой код - считываем температуру с ряда датчиков, посылаем по сериальному порту, и температуру с одного из датчиков выводим на семисегментники.
Но поскольку датчик не один, есть желание реализовать выбор нужно датчика для вывода на семисегментники. В наличии есть IR приемник с пультом.
Собственно проблема заключается в перехвате сигнала с пульта.
Большую часть времени ардуина опрашивает датчики температуры (по сути в loop без задержки), поэтому в самом начале идет проверка на сигнал с пульта. Собственно опрос датчиков занимает довольно много времени (720 мс на один датчик) - в итоге нужно искать момент, когда сигнал будет перехвачен.
Возможно ли заставить IRremote перехватывать сигнал с пульта вне зависимости от тех действий, что выполняет ардуина (пришло прерывание от ик порта - декодировали, продолжили выполнять основной цикл)?
Вы не в том направлении копаете.
по сути в loop без задержки
720 мс на один датчик
Предлагаете добавить задержку?
Ок. Для получения температуры нужно дать задание датчику и через 750 мс запросить и получить температуру.
Тут есть задержка. Что делать в таком случае? вместо задержки проверять команды по IR? ИМХО костыль.
Предлагаете добавить задержку?
ИМХО костыль.
Ага.
Значит даем задание всем датчикам на вычисление температуры, запоминаем текущее время (в мс), и крутимся в loop (с проверкой IR) пока не пройдет 750 мс. Как прошло - снимаем показания.
Такой подход нормальный?
Все верно. При непосредственном общении МК с датчиками запрещаются все прерывания, а значит ИК-приемник в эти моменты, все равно обрабатываться не будет, отсюда встает вопрос - зачем городить огород, если можно просто избавиться от задержки.