张高兴的 MicroPython 入门指南(二)中 GPIO 的使用方法有哪些?

摘要:目录什么是 GPIO使用方法使用微动开关点亮板载 LED硬件需求电路代码参考 什么是 GPIO GPIO 是 General Purpose Input Output 的缩写,即“通用输入输出”。 Raspberry Pi Pico 左右两
目录什么是 GPIO使用方法使用微动开关点亮板载 LED硬件需求电路代码参考 什么是 GPIO GPIO 是 General Purpose Input Output 的缩写,即“通用输入输出”。 Raspberry Pi Pico 左右两侧各有一列 GPIO 引脚, Pico 通过这两列引脚进行一些硬件上的扩展,与传感器进行交互等等。 简单的讲,每一个 GPIO 引脚都有两种模式:输出模式(OUTPUT)和输入模式(INPUT)。输出模式类似于一个电源,Pico 可以控制这个电源是否向外供电,比如打开外部的 LED 小灯,当然最有用的还是向外部设备发送信号。和输出模式相反,输入模式是接收外部设备发来的信号。GPIO 通常采用标准逻辑电平,即高电平和低电平,用二进制 0 和 1 表示。在这两个值中间还有阈值电平,即高电平和低电平之间的界限。Arduino 会将 -0.5 ~ 1.5 V 读取为低电平,3 ~ 5.5 V 读取为高电平, Pico 未查到相关资料。GPIO 还可用于中断请求,即设置 GPIO 为输入模式,值达到相应的要求时进行中断。 输入模式还包含两种特殊的输入模式:上拉输入(INPUT_PULLUP)和下拉输入(INPUT_PULLDOWN)。上拉输入就是芯片内部的电阻连接 VCC ,将该引脚设置为高电平状态。在没有外部信号输入的情况下,上拉输入可以保持引脚处于高电平状态,从而避免了信号的不确定性。在上拉输入模式中,如果外部输入了低电平信号,由于电阻的存在,引脚会读取到低电平,但不会产生大电流。这样,单片机可以轻易稳定地读取低电平信号。上拉输入的优势在于它可以提供稳定的高电平状态,直到检测到明确的低电平输入。下拉输入则相反,是将芯片内部的电阻连接 GND,将引脚设置为低电平状态,也是为了避免了信号的不确定性。上拉、下拉输入模式适用于一些特定场合,例如需要检测按钮按压(通常连接到低电平)或其他二进制开关状态。 使用方法 使用 MicroPython 控制 GPIO 要使用 machine 包中的 Pin 类。 from machine import Pin 要获取引脚对象,我们先来看一看构造函数有哪些参数。 Pin(id: Any, mode: int = -1, pull: int = -1, *, value: Optional[int] = None, drive: Optional[int] = None, alt: Optional[int] = None) id 是指引脚的编号。对于 Pico 而言就是引脚图中 GPxx 中的数字编号,这个参数是必填的。 mode 是指引脚的模式。常用的有 Pin.IN 输入模式,Pin.OUT 输出模式。 pull 用来设置引脚输入的模式。Pin.PULL_UP 上拉输入,Pin.PULL_DOWN 下拉输入,None 不设置。 value 设置输出引脚的默认状态。参数可以是任何转换为​​布尔值的变量,1 默认输出高电平,0 默认输出低电平。 drive 指定引脚的输出功率。参数可以是 Pin.LOW_POWER、Pin.MED_POWER、Pin.HIGH_POWER,实际的输出功率还是取决于具体的引脚。 常见的用法参考下面的例子: pin0 = Pin(0, mode=Pin.IN) # 设置 0 号引脚为输入模式 pin1 = Pin(1, mode=Pin.IN, pull=Pin.PULL_UP) # 设置 1 号引脚为上拉输入模式 pin2 = Pin(2, mode=Pin.OUT, value=0) # 设置 2 号引脚为输出模式,默认输出低电平 在获取到引脚对象后,可以使用 Pin.value(x: Optional[int] = None) 方法设置或读取引脚的值。参数 x 可以是任何转换为​​布尔值的变量,1 输出高电平,0 输出低电平。当不传递参数 x 时,方法为读取引脚的值。 pin2.value(1) # 设置 2 号引脚输出高电平 print(pin1.value()) # 读取 1 号引脚的输入值 当想要重新改变引脚的设置时,除了重新实例化对象之外,还可以使用 Pin.init(value: int, drive: int, alt: int, mode: int = -1, pull: int = -1)、Pin.mode(mode: Optional[int])、Pin.pull(pull: Optional[int]) 对引脚重新设置。
阅读全文