Модуль RMT (Remote Control) в первую очередь предназначен для отправки и приема инфракрасных сигналов дистанционного управления, которые используют отключение несущей частоты, но благодаря своей конструкции он может использоваться для генерации сигналов различных типов.
Пример использования: отправка
import machine
# создать объект RMT для передачи
rmt = machine.RMT(channel=3, gpio="P20", tx_idle_level=0)
# создать серию битов для отправки
data = (1,0,1,0,1,0,1,0,1)
# определить длительность битов, единица времени зависит от выбранного канала RMT
duration = 10000
# отправить сигнал
rmt.send_pulses(duration, data)
Пример использования: получение
import machine
# создать объект RMT
rmt = machine.RMT(channel=3)
# Настроить RTM для получения
rmt.init(gpio="P20", rx_idle_threshold=12000)
# ждать любого количества импульсов, пока какой-нибудь не будет длиннее, чем rx_idle_threshold
data = rmt.recv_pulses()
Конструкторы
class machine.RMT(channel,…)
Строит объект RMT на заданном канале. channel может быть 2-7. Без дополнительных параметров объект RMT создается, но не инициализируется. Если даны дополнительные аргументы, RMT инициализируется для передачи или приема. Смотрите init для параметров инициализации. Разрешение, с которым может быть отправлен/получен импульс, зависит от выбранного канала:
Методы
rmt.init(gpio, rx_idle_threshold, rx_filter_threshold, tx_idle_level, tx_carrier)
Инициализирует периферийное устройство RMT с заданными параметрами:
Должны быть определены либо rx_idle_threshold, либо tx_idle_level: оба не могут быть заданы одновременно, поскольку канал можно настроить только в режиме RX или TX. rx_filter_threshold не является обязательным параметром. Если он не задан, то принимаются все импульсы с длительностью, меньшей rx_idle_threshold. tx_carrier не является обязательным параметром. Если он не задан, для отправленных импульсов не используется никакая модуляция.
Параметр tx_carrier является кортежем со следующей структурой:
rmt.deinit ()
Деинициализирует объект RMT.
Если объект RMT необходимо перенастроить с RX/TX на TX/RX, то нужно либо вызвать первый deinit(), либо снова init() с желаемой конфигурацией.
rmt.pulses_get(pulses, timeout)
Читает импульсы вывода GPIO.
Возвращаемое значение: кортеж элементов со следующей структурой: (level, duration)
Максимум 128 импульсов может быть получено подряд без приема «холостого» сигнала. Если входящая последовательность импульсов содержит более 128 импульсов, остальные отбрасываются, и приемник ожидает другую последовательность импульсов. Функция pulses_get может быть вызвана для получения более 128 импульсов, однако при оценке принятых данных следует учитывать вышеупомянутое ограничение.
rmt.pulses_send(duration, data, start_level)
Генерирует импульсы в соответствии с параметрами ниже
data должна быть кортежем, а duration может быть кортежем или одним числом, data необязательна. В случае, если указана только duration, то это должен быть кортеж, и вы также должны указать start_level, который будет определять уровень первой длительности, после чего уровень сигнала переключается между каждым значением длительности. Если data предоставлена, и duration является одним числом, каждый импульс в data будет иметь равную длину, как установлено duration. Если data и duration представлены в виде кортежей, они должны состоять из одного и того же количества элементов, причем каждый импульс согласован.
Константы
Определяет уровень импульса: RMT.LOW, RMT.HIGH
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru