Как сделать таймаут на выполненние определенной процедуры, не останавливая других
- Войдите на сайт для отправки комментариев
Доброго времени!
Столкнулся с такой ситуацией: есть процедура, которая опрашивает датчик движения, и если на нем положительный сигнал, то посылает СМС. Соответсвенно, если датчик будет выдавать положительный сигнал на протяжении 10 минут, мне свалится порядка 15-20 СМС.
Вопрос: как сделать таймер от времени первого срабатывания датчика, чтобы опросить его повторно через 10 минут? Т.е. мы получаем текущее время, к нему добавляем 10 мин и при обращении к процедуре каждый раз проверяем, наступило ли нужное время или нет, и если наступило, и сигнал на датчике положительный, то снова отправляем СМС и снова делаем тайм аут на 10 минут.
Почитал про команду long(), но не разобрался, как ее в моем случае можно грамотно применить. Или вообще не ее.
Вот здесь через определённый интервал мигают светодиодом, а Вы опрашивайте датчик, точно также.
http://arduino.ru/tutorials/BlinkWithoutDelay
http://arduino.ru/forum/programmirovanie/klass-titanovyi-velosiped-dlya-...
ЕвгенийП, спасибо!
Оказывается этот функционал у меня есть, я по нему опрашиваю датчики температуры :)
При таком функционале возникла сложность с первым опросом, когда задержка не нужна. В итоге добавил переменную типа булево с хранением 0 / 1. 1 - если первое обращение, затем в обращении переменная обнуляется. По прошествии заданного времени, если тревожных сигналов больше не формировалось, переменная снова получает значение 1. И теперь при возникновении тревожного сигнала СМС приходит сразу, а затем опять с учетом задержки. И т.д. по кругу.