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

1 Ответ

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

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

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

    18 балл(ов)

  2. sser

    12 балл(ов)

  3. Тигрыч

    8 балл(ов)

  4. Un_ka

    8 балл(ов)

  5. artalex

    6 балл(ов)

  6. Vitalii_Mashinkin

    2 балл(ов)

Награды месяца
1-е место: Teensy 3.6
2-е место: Teensy 3.5
3-е место: Teensy 3.2

...