MicroPython:Библиотеки/pyb/Класс ADC/ADC.read timed()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


ADC.read timed()[1]

  • ADC.read_timed(buf, timer) – считывает аналоговые значения в буфер buf с периодичностью, заданной в аргументе timer.

Значение в аргументе buf может быть, например, массивом байтов или array.array. АЦП-значения имеют 12-битное разрешение и сохраняются напрямую в буфер buf, если размер его элементов составляет 16 бит или больше. Если в буфере buf только 8-битные элементы (например, это массив байтов), то разрешение данных будет снижено до 8 бит.

В аргументе timer должен быть объект Timer – данные будут считываться при каждом срабатывании этого таймера. Объект Timer должен быть уже инициализирован и запущен с нужной частотой.

В целях совместимости с тем, как эта функция работала раньше, в timer также можно задать целое число, обозначающее частоту (в герцах), с которой нужно считывать данные. В этом случае таймер 6 будет автоматически настроен на эту частоту.

Пример использования объекта Timer (предпочтительный вариант):

adc = pyb.ADC(pyb.Pin.board.X19) # создает объект ADC
                                 # на контакте X19
tim = pyb.Timer(6, freq=10)      # создает таймер,
                                 # работающий с частотой 10 Гц 
buf = bytearray(100)             # создает буфер
                                 # для хранения данных
adc.read_timed(buf, tim)         # делаем 100 считываний,
                                 # это займет 10 секунд

Пример использования целого числа, чтобы задать частоту считывания:

adc = pyb.ADC(pyb.Pin.board.X19) # создаем объект «ADC»
                                 # на контакте X19
buf = bytearray(100)             # создаем буфер из 100 байтов 
adc.read_timed(buf, 10)          # считываем аналоговые значения
                                 # в буфер с частотой 10 Гц;
                                 # это займет 10 секунд
for val in buf:                  # пробегаемся по всем данным 
    print(val)                   # печатаем данные

Эта функция не выделяет память в куче. И это блокирующая функция: программа, запустившая ее, не возобновит работу, пока буфер не заполнится.

См.также

Внешние ссылки