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) # печатаем данные
Эта функция не выделяет память в куче. И это блокирующая функция: программа, запустившая ее, не возобновит работу, пока буфер не заполнится.