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

如何在micro:bit MakeCode中为0-3以外引脚实现on pin pressed功能及GPIO作按钮

在micro:bit MakeCode中为非0-3引脚实现「on pin pressed」功能的方法

核心逻辑

「on pin pressed」的本质是引脚电平变化检测+消抖,非0-3引脚无法直接使用官方封装块,但可以通过手动配置引脚拉取模式+软件消抖来复刻相同效果。

具体实现步骤

1. 配置引脚拉取模式

根据按钮接线方式,用set pull pin块设置对应引脚的拉取模式:

  • 按钮一端接引脚、另一端接地:选择上拉(引脚默认输出高电平,按下按钮后电平变低)
  • 按钮一端接引脚、另一端接3V:选择下拉(引脚默认输出低电平,按下按钮后电平变高)

2. 实现带消抖的电平检测

通过forever循环持续检测引脚电平,配合计时器实现消抖(避免按钮机械抖动导致多次触发):

图形块示例
  • 初始化变量last_trigger_time并设为0
  • 在forever块内:
    • 用if块判断引脚电平(比如上拉模式下判断pin P4 is low,代表按钮按下)
    • 嵌套if块判断running time() - last_trigger_time > 200(200ms为消抖阈值,可按需调整)
    • 满足条件时执行响应逻辑(如显示图标),同时更新last_trigger_time为当前运行时间
JavaScript示例
let lastTriggerTime = 0
// 配置P4引脚为上拉模式(适配按钮接GND的场景)
pins.setPull(DigitalPin.P4, PinPullMode.PullUp)
basic.forever(() => {
    // 检测按钮按下(电平变低)
    if (pins.digitalReadPin(DigitalPin.P4) === 0) {
        // 消抖判断:距离上次触发超过200ms才执行逻辑
        if (input.runningTime() - lastTriggerTime > 200) {
            // 自定义响应逻辑:比如显示心形图标
            basic.showIcon(IconNames.Heart)
            lastTriggerTime = input.runningTime()
        }
    } else {
        // 按钮松开时的逻辑:比如清空屏幕
        basic.clearScreen()
    }
})

注意事项

  • 消抖阈值可根据按钮质量调整,通常100-300ms即可有效过滤抖动
  • 务必避免引脚悬空,否则会出现随机误触发
  • 所有GPIO引脚(包括非0-3)的输入能力一致,配置正确后可稳定用作按钮输入

内容的提问来源于stack exchange,提问作者Library Seph

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:39