+2 голосов
Мне необходимо считывать данные с датчика ровно один раз в минуту. delay() я использовать не могу, так как между считываниями должен выполняться ещё код. Какие функции можно использовать, чтобы считывать данные строго через равные промежутки времени?
(925 баллов) 40 74 103

1 Ответ

+2 голосов
 
Лучший ответ

Существует 2 способа:
1. Проверять в основном цикле не прошло ли достаточно времени для того чтобы прочитать данные датчика ( классический пример Мигаем светодиодом без delay() )
2. Использовать прерывание по таймеру (работа основной программы будет приостанавливаться и выполняться необходимый Вам код для опроса датчика).
Подробнее можно ознакомится здесь: Использование прерываний в Arduino
2-й метод даст большую точность, но при использовании платформы Ардуино нужно учитывать, что таймеры могут принимать участие в работе некоторых библиотек(например Servo) и генерации сигнала ШИМ на выходах платы. Также необходимо учитывать то, что код внутри прерывания должен выполняться максимально быстро - т.е. опрос датчика не должен занимать длительное время в противном случае могут возникнуть проблемы с выполнением программы в основном цикле.

(1.2 тыс. баллов) 7 26 51
выбран
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. KrSV

    2 балл(ов)

  2. Палыч

    2 балл(ов)

  3. Дамир

    2 балл(ов)

  4. lcco

    2 балл(ов)

  5. Ergamister

    2 балл(ов)

  6. Александр312

    2 балл(ов)

...