Как сделать таймаут на выполненние определенной процедуры, не останавливая других

dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

Доброго времени!

Столкнулся с такой ситуацией: есть процедура, которая опрашивает датчик движения, и если на нем положительный сигнал, то посылает СМС. Соответсвенно, если датчик будет выдавать положительный сигнал на протяжении 10 минут, мне свалится порядка 15-20 СМС.

Вопрос: как сделать таймер от времени первого срабатывания датчика, чтобы опросить его повторно через 10 минут? Т.е. мы получаем текущее время, к нему добавляем 10 мин и при обращении к процедуре каждый раз проверяем, наступило ли нужное время или нет, и если наступило, и сигнал на датчике положительный, то снова отправляем СМС и снова делаем тайм аут на 10 минут.

Почитал про команду long(), но не разобрался, как ее в моем случае можно грамотно применить. Или вообще не ее.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот здесь через определённый интервал мигают светодиодом, а Вы опрашивайте датчик, точно также.

http://arduino.ru/tutorials/BlinkWithoutDelay

Клапауций 322
Offline
Зарегистрирован: 31.12.2015
dr.lmg
dr.lmg аватар
Offline
Зарегистрирован: 07.01.2016

ЕвгенийП, спасибо!

Оказывается этот функционал у меня есть, я по нему опрашиваю датчики температуры :)

При таком функционале возникла сложность с первым опросом, когда задержка не нужна. В итоге добавил переменную типа булево с хранением 0 / 1. 1 - если первое обращение, затем в обращении переменная обнуляется. По прошествии заданного времени, если тревожных сигналов больше не формировалось, переменная снова получает значение 1. И теперь при возникновении тревожного сигнала СМС приходит сразу, а затем опять с учетом задержки. И т.д. по кругу.