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

1 Ответ

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

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

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

    52 балл(ов)

  2. sser

    8 балл(ов)

  3. reider

    5 балл(ов)

  4. Александр7

    5 балл(ов)

  5. Ror

    2 балл(ов)

  6. Jon Brown123

    2 балл(ов)

...