如何在树莓派Pico的MicroPython中用IRQ计数后点亮LED
树莓派Pico按键计数触发LED实现方案
需求背景
- 运行环境:Ubuntu 22.04系统,通过Thonny在树莓派Pico上运行MicroPython
- 现有配置:Pin14配置为下拉输入,上升沿IRQ触发(触发时打印"button pushed");Pin13连接LED可正常工作
- 目标需求:每次按键触发IRQ时进行计数,当计数达到4时,将Pin13置高以点亮LED
修改后的代码
import machine import utime button = machine.Pin(14, machine.Pin.IN, machine.Pin.PULL_DOWN) led = machine.Pin(13, machine.Pin.OUT) count = 0 def button_handler(pin): global count utime.sleep_ms(100) if pin.value(): print("button pushed") count += 1 print(f"当前计数: {count}") if count >= 4: led.value(1) count = 0 # 可选:重置计数,支持重复触发 button.irq(trigger=machine.Pin.IRQ_RISING, handler=button_handler)
关键修改说明
- 全局变量声明:在中断函数内加入
global count,确保可以正确修改外部定义的计数变量,避免局部变量冲突 - 计数逻辑:每次有效按键触发时执行
count += 1,实现计数累加 - LED触发逻辑:当计数达到4时,调用
led.value(1)直接点亮LED;若需要重复触发,可添加count = 0重置计数 - 防抖优化:保留原代码的
utime.sleep_ms(100)防抖延时,结合二次判断按键状态,减少误触发概率
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

