Подскажите с кодом. С тем, который выделен зеленым. Мне нужно, чтобы сигнал с датчика дошел до Ардуино в тот момент, когда работает гудок. А работает он каждый раз немного по-разному. Какая логика работы if (digitalRead) - он будет ждать некоторое время, пока не получит сигнал? Или будет ждать до следующей команды? Или можно задать время ожидания?
Комментарии: 11
Malformed
Не ждёт
Aleksandr
Гудок включается по такой схеме : есть реле, которое подает питания на кондер через резистор, а тот разряжается на катушку другого реле, и уже оно питает гудок пока кондер разряжается на его обмотку. Милисекунды и части секунды там гуляют. Как я понимаю, if (digitalRead) производит замер ПРЯМО СЕЙЧАС, но ведь какой-то диапазон допуска должен быть?
Kaktys
Никакого нет
Aleksandr
Так написал же чтобы проверяло. Только не пойму, в какое время оно будет проверять ( На остальной код вроде можно не ставить - после } else { будет вызвана функция которая будет верещать в течении часа. Плюс повторить проверку таким же образом, в т.ч. для других датчиков нужно будет много раз. Ааа, слушай. Кажется понял - эта команда начинает ждать с текущего момента и до конца цикла. Тогда выходит, что нужно ограничить время исполнения команды ожидания, и добавить, что если не уложилось - то это ошибка.
Ratmir
В самом верху метода проверяй наличие питания и пина гудка и если его нет, то ставь else на остальной код
Evgeniy
А тебя не смущает что ардуина по 13 секунд в носу ковыряет?
Aleksandr
Нет - это напрямую связано с тем, что устройство на которое подаю сигналы медленно работает.
Evgeniy
То что устройство работает медленно не страшно Если ардуине в эти 13 секунд "прилетает сообщение" - ардуина курит бамбук и релаксирует... Не может ли быть так: в начале раскурки сигнал с устройства есть, а к окончанию уже пропадает?
Aleksandr
Мне порекомендовали использовать прерывания. Когда доберусь до работы и выпью кофе, посмотрю что это такое. Якобы можно сделать так, чтобы Ардуина ждала сигнал несколько секунд, как только он появится программа пойдет дальшеч а если не появится - выполнится функция ошибки.
Evgeniy
Ну если порекомендовали =) читай, но прерывание это прерывание, а не ожидание в любом случае от "курения бамбука" надо избавляться
Aleksandr
Да, но конкретно с этим кодом он уживается. Кроме замера обратной связи, ардуине просто нечего делать, пока подключаемое устройство "думает"