You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在树莓派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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:00:02