micro:bit麦克风使用故障:input.sound_level()报AttributeError错误
解决micro:bit Mu编辑器中
input.sound_level()的AttributeError问题 错误原因分析
你遇到的AttributeError: 'function' object has no attribute 'sound_level'是因为Mu编辑器使用的micro:bit Python API版本与官网编辑器不一致:
- 官网编辑器默认适配较新的micro:bit V2 API,支持
input.sound_level()方法; - 旧版Mu编辑器绑定的是早期API,此时获取声音等级需要通过
microphone模块调用,而非input模块。
另外你的代码存在一处小问题:display.scroll(str(input.sound_level))里的input.sound_level是函数对象,直接转字符串会显示函数的内存地址,而非实际声音数值,应该调用函数input.sound_level()或使用已赋值的sound_level变量。
修复方案
方案1:适配旧版Mu编辑器(兼容micro:bit V2)
如果你的设备是micro:bit V2,修改代码使用microphone模块调用接口:
from microbit import * import time sound_level = 0 while True: sound_level = microphone.sound_level() display.scroll(str(sound_level)) time.sleep(1)
方案2:更新Mu编辑器的micro:bit固件
若想继续使用input.sound_level(),可通过更新固件让Mu编辑器适配新版API:
- 打开Mu编辑器,点击工具栏「Flash」按钮旁的下拉菜单,选择「Update Microbit Firmware」;
- 按照提示将micro:bit连接电脑,完成固件更新后重新烧录代码。
效果验证
修改后的代码烧录完成后,micro:bit的LED会每秒滚动显示0-255区间内的声音等级数值,与官网编辑器的运行效果一致。
内容的提问来源于stack exchange,提问作者TodGuess
相关产品推荐
相关产品推荐

