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

如何在Elecfreaks Cutebot机器人上解码红外遥控器及第三方设备按键?

解码第三方红外遥控器按键(Elecfreaks Cutebot / micro:bit)

完全可以解码电视、LED灯串等第三方红外遥控器的按键,核心是先捕获目标遥控器的红外编码,再修改程序匹配这些编码。以下是具体操作步骤:

1. 捕获第三方遥控器的红外编码

Cutebot的红外接收引脚为P1,编写简单程序即可捕获任意红外按键的脉冲序列或编码:

// 初始化红外接收引脚
let irPin = pins.createDigitalPin(DigitalPin.P1)
let pulseTimes = []

// 捕获脉冲时长
irPin.onPulsed(DigitalPin.P1, PulseValue.Low, function () {
    let duration = input.runningTime() - pulseTimes[pulseTimes.length - 1]
    pulseTimes.push(duration)
    // 捕获足够数据后输出到串口
    if (pulseTimes.length > 64) {
        serial.writeLine(pulseTimes.toString())
        basic.showString("OK")
        pulseTimes = []
    }
})

basic.forever(function () {
    if (pulseTimes.length === 0) {
        pulseTimes.push(input.runningTime())
    }
})

将micro:bit通过USB连接电脑,打开MakeCode的串口监视器,按下第三方遥控器的每个按键,记录输出的脉冲序列;也可以直接调用cutebot.irRead()函数读取转好的十六进制编码(官方库已支持基础转码)。

2. 修改程序匹配第三方编码

拿到编码后,替换官方示例中的按键判断逻辑即可。比如捕获到电视遥控器音量+键的编码为0x10EF,代码示例如下:

cutebot.onIrButtonPressed(CutebotIrButton.Any, function () {
    let code = cutebot.irRead()
    // 匹配第三方遥控器按键
    if (code === 0x10EF) {
        cutebot.setMotorSpeed(50, 50) // 示例:机器人前进
    } else if (code === 0x11EE) {
        cutebot.setMotorSpeed(0, 0) // 示例:机器人停止
    }
})

如果官方库的irRead()无法识别非配套遥控器的编码,直接用第一步捕获的脉冲序列进行对比判断即可。

官方参考内容翻译

原参考链接的核心信息翻译如下:

材料准备

  • Elecfreaks Cutebot机器人 ×1
  • BBC micro:bit主板 ×1
  • Cutebot配套红外遥控器 ×1
  • USB数据线 ×1

原理说明

Cutebot的红外模块采用NEC红外协议,这是目前家电遥控器最常用的标准之一。多数电视、LED灯串遥控器都遵循该协议,只要目标遥控器采用NEC协议,就可以被Cutebot解码。

注意事项

  • 测试时避免强光直射红外接收器,防止干扰信号捕获
  • 少数小众遥控器可能采用RC5等其他协议,这种情况需要修改程序中的脉冲解析逻辑,适配对应协议的时序规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:37:31