如何在JavaScript与microPython中读取BBC micro:bit红外及磁力计数值?
在JavaScript和MicroPython中读取BBC micro:bit的红外与磁力计传感器数值
JavaScript(MakeCode)实现
红外(IR)读取说明与解决方案
micro:bit v2的内置红外模块核心功能是红外通信,无法直接读取红外光强度。你使用的input.temperature()读取的是芯片的环境温度,和红外光强度无关。若要检测红外光强度,需外接红外光敏传感器,通过模拟引脚读取数值,示例代码:
// 外接红外传感器连接到P0引脚时的读取代码 basic.forever(function () { let irLightIntensity = pins.analogReadPin(AnalogPin.P0) basic.showNumber(irLightIntensity) })
磁力计(航向角)读取
input.compassHeading()要求先完成磁力计校准,这是设备的必要流程。你可以主动触发校准,避免设备自动提示,示例代码:
// 先执行校准 input.calibrateCompass() basic.forever(function () { let heading = input.compassHeading() basic.showNumber(heading) })
校准完成后,设备会保留校准数据,重启后通常无需再次校准。
MicroPython实现
红外(IR)读取说明与解决方案
和JavaScript环境一致,内置红外模块用于通信,读取红外光强度需外接传感器。示例代码(传感器接P0引脚):
from microbit import * while True: ir_intensity = pin0.read_analog() display.show(str(ir_intensity)) sleep(500)
如果需要使用内置红外模块进行通信,可参考以下代码:
from microbit import * # 发送红外信号 ir.send("TEST") # 循环接收红外信号 while True: received_msg = ir.receive() if received_msg: display.scroll(received_msg)
磁力计(航向角)读取
MicroPython中读取航向角前需执行校准,示例代码:
from microbit import * # 触发磁力计校准 compass.calibrate() while True: heading = compass.heading() display.show(str(heading)) sleep(500)
校准过程中需按提示倾斜设备,完成后即可稳定输出航向角;若校准失败,可重新调用compass.calibrate()。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

