ИК приемник
- Войдите на сайт для отправки комментариев
Пт, 04/10/2013 - 00:01
Имеется: 3 датчика температуры, экран, ик приемник.
Задача: включать/выключать подсветку экрана по кнопке на пульте
код примерно такой:
...
int pause = 500;
bool ledon;
...
void setup()
{
...
lcd.backlight();
...
}
void loop()
{
if (pause==500) {
...
обновляем температуру с 3-ех датчиков на экране
...
pause=1;
} else
pause=pause+1;
//получаем команду с ик пульта
if (irrecv.decode(&results)) {
Serial.println(results.value);
if(results.value==16753245)
{
ledon=!ledon;
if (ledon==1) lcd.backlight(); else
lcd.noBacklight();
}
irrecv.resume();
}
delay(10);
}
Все работает почти как надо
Проблема в том, что если нажать на пульте кнопку в момент, когда обновляется температура - ничего не произойдет.
Как это граммотно реализовать?
Пока только 2 варианта в голове:
1) увеличить период обновления с 5сек до...
2) опрашивать 3 датчика отдельно, подвисать должно меньше.
Буду рад выслушать ваши варианты.
Спасибо
прерывания для этого есть. надо смотреть как с ними библиотеки работают.
тоесть в момен изменения уровня на ик приемнике ардуина должна начать его обрабатывать - получить полностью весь код или ожидать его получения в цикле и выйти из него по таймауту.
// подключение библиотеки #include <IRremote.h> //вход ИК приемника int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; long ir_kod; void setup() { // включить приемник irrecv.enableIRIn(); // прерывания для ИК ir_time1=0;ir_time2=0; attachInterrupt(0, get_ir_kod, FALLING); } void loop() { //обновляем температуру с 3-ех датчиков на экране ................................. // обработка кода нажатия if(ir_kod>0) { Serial.println(ir_kod); ir_go(ir_kod); ir_kod=0; } } // получить код переданный с ИК пульта void get_ir_kod() { detachInterrupt(0); // отключить прерывание 0 // получаем с ИК { ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, attachInterrupt(0, get_ir_kod, CHANGE); }Вопросик немного не потеме, нашел примеры работы с IR приемником, после приема посылки вывод в serial port. ЕСли подключить ардино Uno к компу через терминал увижу ли я данные?
Вопросик немного не потеме, нашел примеры работы с IR приемником, после приема посылки вывод в serial port. ЕСли подключить ардино Uno к компу через терминал увижу ли я данные?
Если данные в ком порт отправляются конечно увидите.