pulseio – 支持基于单个脉冲的协议

pulseio模块包含提供对基本脉冲 IO 的访问的类。单个脉冲通常用于红外遥控器和 DHT 温度传感器。

如果程序在使用后继续,所有类都会更改硬件状态,并且在不再需要它们时应取消初始化。为此,请调用deinit() 或使用上下文管理器。有关更多信息,请参阅 Lifetime 和 ContextManagers for more info.

在这些板上可用
  • ARAMCON Badge 2019
  • ARAMCON2 Badge
  • ATMegaZero ESP32-S2
  • Adafruit CLUE nRF52840 Express
  • Adafruit Circuit Playground Bluefruit
  • Adafruit Circuit Playground Express 4-H
  • Adafruit CircuitPlayground Express
  • Adafruit CircuitPlayground Express with Crickit libraries
  • Adafruit CircuitPlayground Express with displayio
  • Adafruit EdgeBadge
  • Adafruit Feather Bluefruit Sense
  • Adafruit Feather M0 Express
  • Adafruit Feather M0 Express with Crickit libraries
  • Adafruit Feather M4 CAN
  • Adafruit Feather M4 Express
  • Adafruit Feather RP2040
  • Adafruit Feather STM32F405 Express
  • Adafruit Feather nRF52840 Express
  • Adafruit FunHouse
  • Adafruit Grand Central M4 Express
  • Adafruit Hallowing M4 Express
  • Adafruit ItsyBitsy M4 Express
  • Adafruit ItsyBitsy RP2040
  • Adafruit ItsyBitsy nRF52840 Express
  • Adafruit LED Glasses Driver nRF52840
  • Adafruit Macropad RP2040
  • Adafruit MagTag
  • Adafruit Matrix Portal M4
  • Adafruit Metro ESP32S2
  • Adafruit Metro M0 Express
  • Adafruit Metro M4 Airlift Lite
  • Adafruit Metro M4 Express
  • Adafruit Metro nRF52840 Express
  • Adafruit Monster M4SK
  • Adafruit PyGamer
  • Adafruit PyPortal
  • Adafruit PyPortal Pynt
  • Adafruit PyPortal Titano
  • Adafruit Pybadge
  • Adafruit QT Py M0 Haxpress
  • Adafruit QT Py RP2040
  • Adafruit QT2040 Trinkey
  • Adafruit Trellis M4 Express
  • AloriumTech Evo M51
  • Arduino Nano 33 BLE
  • Arduino Nano RP2040 Connect
  • Artisense Reference Design RD00
  • AtelierDuMaker nRF52840 Breakout
  • BDMICRO VINA-D21
  • BDMICRO VINA-D51
  • BLE-SS dev board Multi Sensor
  • BastBLE
  • BastWiFi
  • BlueMicro840
  • CP Sapling M0 w/ SPI Flash
  • CP32-M4
  • Capable Robot Programmable USB Hub
  • Cedar Grove StringCar M0 Express
  • Challenger RP2040 WiFi
  • Circuit Playground Express Digi-Key PyCon 2019
  • CircuitBrains Basic
  • CircuitBrains Deluxe
  • CrumpS2
  • Cytron Maker Pi RP2040
  • DynOSSAT-EDU-EPS
  • DynOSSAT-EDU-OBC
  • ESP 12k NodeMCU
  • Electronic Cats Hunter Cat NFC
  • Electronut Labs Blip
  • Electronut Labs Papyr
  • EncoderPad RP2040
  • Espruino Pico
  • Espruino Wifi
  • Feather ESP32S2 without PSRAM
  • FeatherS2
  • FeatherS2 Neo
  • FeatherS2 PreRelease
  • Franzininho WIFI w/Wroom
  • Franzininho WIFI w/Wrover
  • Gravitech Cucumber M
  • Gravitech Cucumber MS
  • Gravitech Cucumber R
  • Gravitech Cucumber RS
  • HMI-DevKit-1.1
  • Hacked Feather M0 Express with 8Mbyte SPI flash
  • HalloWing M0 Express
  • HiiBot BlueFi
  • IkigaiSense Vita nRF52840
  • Kaluga 1
  • LILYGO TTGO T8 ESP32-S2 w/Display
  • MDBT50Q-DB-40
  • MDBT50Q-RX Dongle
  • MEOWBIT
  • MORPHEANS MorphESP-240
  • MakerDiary nRF52840 MDK
  • MakerDiary nRF52840 MDK USB Dongle
  • Makerdiary M60 Keyboard
  • Makerdiary Pitaya Go
  • Makerdiary nRF52840 M.2 Developer Kit
  • Melopero Shake RP2040
  • Mini SAM M4
  • NUCLEO STM32F746
  • NUCLEO STM32F767
  • Oak Dev Tech BREAD2040
  • Oak Dev Tech PixelWing ESP32S2
  • Open Hardware Summit 2020 Badge
  • PCA10056 nRF52840-DK
  • PCA10059 nRF52840 Dongle
  • PCA10100 nRF52833 Dongle
  • PYB LR Nano V2
  • Particle Argon
  • Particle Boron
  • Particle Xenon
  • Pimoroni Interstate 75
  • Pimoroni Keybow 2040
  • Pimoroni PGA2040
  • Pimoroni Pico LiPo (16MB)
  • Pimoroni Pico LiPo (4MB)
  • Pimoroni PicoSystem
  • Pimoroni Plasma 2040
  • Pimoroni Tiny 2040
  • PyCubedv04
  • PyCubedv04-MRAM
  • PyCubedv05
  • PyCubedv05-MRAM
  • PyKey60
  • PyboardV1_1
  • Raspberry Pi Pico
  • Robo HAT MM1 M4
  • S2Mini
  • SAM E54 Xplained Pro
  • SAM32v26
  • SPRESENSE
  • ST STM32F746G Discovery
  • STM32F411E_DISCO
  • STM32F412G_DISCO
  • STM32F4_DISCO
  • Saola 1 w/Wroom
  • Saola 1 w/Wrover
  • Seeeduino Wio Terminal
  • Serpente
  • Silicognition LLC M4-Shim
  • SparkFun LUMIDrive
  • SparkFun MicroMod RP2040 Processor
  • SparkFun MicroMod SAMD51 Processor
  • SparkFun MicroMod nRF52840 Processor
  • SparkFun Pro Micro RP2040
  • SparkFun Pro nRF52840 Mini
  • SparkFun RedBoard Turbo
  • SparkFun STM32 MicroMod Processor
  • SparkFun Thing Plus - RP2040
  • SparkFun Thing Plus - SAMD51
  • Sprite_v2b
  • StackRduino M0 PRO
  • TG-Boards' Datalore IP M4
  • TG-Watch
  • THUNDERPACK_v11
  • THUNDERPACK_v12
  • Targett Module Clip w/Wroom
  • Targett Module Clip w/Wrover
  • Teknikio Bluebird
  • The Open Book Feather
  • TinkeringTech ScoutMakes Azul
  • TinyS2
  • Trinket M0 Haxpress
  • UARTLogger II
  • WarmBit BluePixel nRF52840
  • Winterbloom Big Honking Button
  • Winterbloom Sol
  • keithp.com snekboard
  • micro:bit v2
  • microS2
  • nanoESP32-S2 w/Wrover
  • nanoESP32-S2 w/Wroom
  • nice!nano
  • stm32f411ce-blackpill
  • stm32f411ce-blackpill-with-flash

class pulseio.PulseIn(pin: microcontroller.Pin, maxlen: int = 2, *, idle_state: bool = False)

测量一系列活动和空闲脉冲。这通常用于红外接收器和低成本温度传感器 (DHT)。脉冲信号由定时的活动和空闲周期组成。与 PWM 不同,活动和空闲对没有设置持续时间。

创建与给定引脚关联的 PulseIn 对象。该对象充当具有给定最大长度的只读脉冲长度序列。当它处于活动状态时,新的脉冲长度会添加到列表的末尾。当没有更多空间 (len() == maxlen) 时,将删除最旧的脉冲长度以腾出空间。

参数
  • pin (Pin) – 从中读取脉冲的引脚。

  • maxlen (int) – 次存储的最大脉冲持续时间数

  • idle_state (bool) –引脚的空闲状态。在开始时和在resume第一个记录的脉冲之后将与空闲状态相反。

阅读一系列简短的脉冲:

import pulseio
import board

pulses = pulseio.PulseIn(board.D7)

# Wait for an active pulse
while len(pulses) == 0:
    pass
# Pause while we do something with the pulses
pulses.pause()

# Print the pulses. pulses[0] is an active pulse unless the length
# reached max length and idle pulses are recorded.
print(pulses)

# Clear the rest
pulses.clear()

# Resume with an 80 microsecond active pulse
pulses.resume(80)
maxlen :int

PulseIn 的最大长度。当 len() 等于 maxlen 时,不清楚哪些脉冲是活动的,哪些是空闲的。

paused :bool

当脉冲捕获因pause() 捕获过程中的错误(例如信号太快)而暂停时为真。

deinit(self)None

取消初始化 PulseIn 并释放任何硬件资源以供重用。

__enter__(self)PulseIn

上下文管理器使用的无操作。

__exit__(self)None

退出上下文时自动取消初始化硬件。有关更多信息,请参阅 Lifetime 和 ContextManagers

pause(self)None

暂停脉冲捕捉

resume(self, trigger_duration: int = 0)None

在可选触发脉冲后恢复脉冲捕获。

警告

将触发脉冲与驱动高信号和低信号的设备一起使用有短路风险。使用触发脉冲时,请确保您的设备为开漏(仅驱动为低电平)。您很可能在电路中添加了一个“上拉”电阻来执行此操作。

参数

trigger_duration (int) – 以微秒为单位的触发脉冲持续时间

clear(self)None

清除所有捕获的脉冲

popleft(self)int

删除并返回最早的读取脉冲。

__bool__(self)bool
__len__(self)int

返回当前存储的脉冲持续时间数。

这允许您:

pulses = pulseio.PulseIn(pin)
print(len(pulses))
__getitem__(self, index: int)Optional[int]

返回给定索引处的值或切片中的值。

T这允许您:

pulses = pulseio.PulseIn(pin)
print(pulses[0])
class pulseio.PulseOut(pin: microcontroller.Pin, *, frequency: int = 38000, duty_cycle: int = 1 << 15)

打开和关闭脉冲 PWM“载波”输出。这通常用于红外遥控器。脉冲信号由定时开启和关闭周期组成。与 PWM 不同,开关对没有设定持续时间。

创建与给定引脚关联的 PulseOut 对象。

参数
  • 引脚 (Pin) – 信号输出引脚

  • 频率 (int) – 以赫兹为单位的载波信号频率

  • duty_cycle (int) – 载波频率的 16 位占空比 (0 - 65536)

为了向后兼容,pin 可能是用作载体的 PWMOut 对象。此兼容性将在 CircuitPython 8.0.0 中删除。

发送一系列短脉冲:

import array
import pulseio
import pwmio
import board

# 50% duty cycle at 38kHz.
pwm = pulseio.PulseOut(board.D13, frequency=38000, duty_cycle=32768)
#                             on   off     on    off    on
pulses = array.array('H', [65000, 1000, 65000, 65000, 1000])
pulse.send(pulses)

# Modify the array of pulses.
pulses[0] = 200
pulse.send(pulses)
deinit(self)None

取消初始化 PulseOut 并释放任何硬件资源以供重用。

__enter__(self)PulseOut

上下文管理器使用的无操作。

__exit__(self)None

退出上下文时自动取消初始化硬件。有关更多信息,请参阅 Lifetime 和 ContextManagers

send(self, pulses: _typing.ReadableBuffer)None

从开启开始,以微秒为单位的脉冲交替开启和关闭持续时间。 对于无符号半字(两个字节), pulses必须是 array.array数据类型为“H”的一个。

此方法等待直到发送了整个脉冲阵列并确保之后信号关闭。

Parameters

脉冲 (array.array) – 以微秒为单位的脉冲持续时间