программная задержка для PIR HC-SR501
- Войдите на сайт для отправки комментариев
Вс, 10/11/2013 - 22:41
Привет, не могу сообразить как можно программно уменьшить задержку включения диода после появления движения. Минимальная задержка после срабатывания сенсора - 2-3 секунды, все это время диод горит.
int led = 13; int sensor = 11; void setup() { pinMode(led, OUTPUT); pinMode(sensor, INPUT); } void loop() { if (digitalRead(sensor) == 1) { digitalWrite(led, 1); } else { digitalWrite(led, 0); } }
Как можно погасить диод раньше? Буду признателен за любые ответы, спасибо.
Резисторы на плате покрутить? (если я правильно помню, один настраивает дальность, а другой - время удержания)
Уже подкручены на минимум.
Да, есть такое неудобство, сталкивался. Про задержки до и после срабатывания HC-SR501 неплохо написано в его даташите (http://elecfreaks.com/store/download/datasheet/sensor/DYP-ME003/Specification.pdf).
Даташит я читал. Скажем так, я готов смириться с тем, что по факту, в сумме всех задержек, выходит, что минимальное значение, после которого диод загорится второй раз - порядка 5-6 секунд. Но меня интересует немного другое: как погасить диод раньше, например через секунду после срабатывания сенсора?
Нужен аналог millis(), только чтобы он считал время не с начала работы программы, а с начала срабатывания сенсора.
Это вам в теорию автоматов, отслеживать разные состояния
Навскидку получается так (не тестировал, могут быть ошибки (в том числе и логические)):
Да нет, все верно. Работает именно так, как и необходимо.
Спасибо большое за помощь!