Skip to content

按键

python
LED = Pin(46, Pin.OUT)  # 构建 LED 对象,开始熄灭
KEY = Pin(0, Pin.IN, Pin.PULL_UP)  # 构建 KEY 对象

​ 使用Pin类创建了一个名为LED的对象,将引脚号46指定为LED的控制引脚,并将其配置为输出模式。另外,还创建了一个名为KEY的对象,将引脚号0指定为按键的引脚,并将其配置为输入模式,同时启用上拉电阻。当按键松开时,KEY.value()的返回值为1。

python
from machine import Pin
import time
LED = Pin(46, Pin.OUT)  # 构建 LED 对象,开始熄灭
KEY = Pin(0, Pin.IN, Pin.PULL_UP)  # 构建 KEY 对象
state = 0  # LED 引脚状态
while True:
if KEY.value() == 0:  # 按键被按下
    time.sleep_ms(10)  # 消除抖动
    if KEY.value() == 0:  # 确认按键被按下
        state = not state  # 使用 not 语句而非~语句
        LED.value(state)  # LED 状态翻转
        print('KEY')
        while not KEY.value():  # 检测按键是否松开
            pass

上拉电阻(Pull-up resistor)

​ 是一种常用的电路元件,用于将一个引脚(通常是输入引脚)连接到高电平(通常是电源电压)。

​ 当一个引脚被配置为输入模式时,如果不连接上拉电阻,这个引脚就会变得容易受到外部干扰,因为它没有确定的电平状态。此时,引脚可能会出现浮动状态(floating),即既不是逻辑高电平(1)也不是逻辑低电平(0),其电压可能会受到周围环境的影响而变化。

外部中断

python
from machine import Pin
import time

LED = Pin(46, Pin.OUT)  # 创建LED对象,初始状态为熄灭
KEY = Pin(0, Pin.IN, Pin.PULL_UP)  # 创建KEY对象
state = 0  # LED引脚状态

# LED状态翻转函数
def fun(KEY):
    global state
    time.sleep_ms(10)  # 消除按键抖动
    if KEY.value() == 0:  # 确认按键被按下
        state = not state
        LED.value(state)

KEY.irq(fun, Pin.IRQ_FALLING)  # 定义中断,下降沿触发

KEY.irq(fun(KEY), Pin.IRQ_FALLING) 这样的写法是不正确的,因为它实际上会直接调用 fun(KEY) 函数,并将其返回值作为回调函数传递给 irq() 方法。

​ 在设置中断时,我们需要传递回调函数的名称,而不是调用函数。这样,当中断触发时,才会自动调用回调函数。

​ 当设置中断时,irq() 方法会自动管理中断触发和回调函数的调用。无需显式地传递参数给回调函数,它们将在触发中断时自动传递。在这个例子中,回调函数 fun 将自动接收触发中断的引脚对象作为参数。

Released under the MIT License.