micro:bit 温度变化提示牌:十次采样取平均,按键重新建立基准

2026-10-27 / 0 评论 / 3 阅读

micro:bit 温度变化提示牌:十次采样取平均,按键重新建立基准 教程示意图

发布日期:2026-10-27

适用场景

想观察桌面附近是否逐渐变暖,又不希望每一次整数读数跳动都立刻改变显示,可以制作这块温度变化提示牌。程序每隔约一秒采样一次,每十次形成一个平均值;第一组平均值作为基准,之后根据偏差显示上箭头、下箭头或横线。

这个项目适合学习采样、列表、平均值和状态判断。显示的是相对于基准的变化方向,不是相邻两个窗口之间的升降速度,也不能作为医疗测温、设备过热保护或精密环境监测装置。

原理

micro:bit 的温度读数来自处理器内部,反映的是芯片温度,可能受到板上发热和供电状态影响。micro:bit 官方温度计项目说明了温度读数的来源,并建议与其他温度计比较。因此,实验期间应保持摆放位置和供电方式一致。

每个采样窗口收集十个整数读数,相加后除以十。平均处理可以减弱个别读数的影响,但不会把传感器变成高精度温度计。本例设定偏差达到正两摄氏度时显示上箭头,达到负两摄氏度时显示下箭头,其余情况显示横线。

温度函数、运行时间和休眠函数的定义见 MicroPython 模块文档。按键使用“自上次检查以来是否按过”的事件读取方式,具体语义见官方按键文档。

准备工作

准备一块 micro:bit V2、一条可传输数据的 USB 线,以及能够访问 micro:bit 官方 Python 编辑器的电脑。项目只使用板载功能,无需外接传感器,也无需连接边缘引脚。

先备份板上原有程序。将主板放在干燥、绝缘且通风的位置,避免紧贴电脑散热口。下面程序使用 micro:bit MicroPython,不能直接粘贴到另一种 Python 方言的编辑器中。

分步骤操作

第一步:输入完整程序

在官方 Python 编辑器中新建程序,替换编辑区原有内容:

from microbit import *

WINDOW = 10
INTERVAL_MS = 1000
THRESHOLD = 2.0

samples = []
baseline = None
last_sample = running_time()
flat = Image('00000:00000:99999:00000:00000')
display.show('.')

while True:
    if button_a.was_pressed():
        samples = []
        baseline = None
        last_sample = running_time()
        display.show('.')

    now = running_time()
    if now - last_sample >= INTERVAL_MS:
        last_sample = now
        samples.append(temperature())

        if len(samples) == WINDOW:
            average = sum(samples) / WINDOW
            samples = []

            if baseline is None:
                baseline = average

            difference = average - baseline
            if difference >= THRESHOLD:
                display.show(Image.ARROW_N)
            elif difference <= -THRESHOLD:
                display.show(Image.ARROW_S)
            else:
                display.show(flat)

    sleep(20)

窗口变量表示每组十次采样,间隔变量表示约一秒读取一次,阈值变量表示相对基准的温差。这些都是可直接运行的参数,不需要填写设备地址或登录资料。

第二步:下载并建立第一组基准

将编辑器下载的程序文件复制到主板挂载的盘符,等待写入完成。启动后先显示一个点,表示还在收集第一组数据;约十秒后出现横线,表示基准已经建立。

板子刚接通电源时可能逐渐升温。建议先保持供电静置几分钟,再按一次 A 键重新收集基准。按键后不会立即采用某一瞬间的温度,而是清空旧窗口,重新等待十次采样。

第三步:观察相对基准的变化

把板子移到室内另一处干燥、安全的位置,例如远离热源的另一张桌面,等待多个采样窗口。只有温度读数相对基准变化足够大,箭头才会改变。一次没有变化,不能证明程序没有运行。

不要用吹风机、明火、热水或冰箱制造温差。温度变化可能较慢,本项目可以先通过下面的模拟数据验证程序分支,再观察自然变化。

第四步:理解按键与窗口更新

主循环大部分时间每二十毫秒检查一次按键,温度采样则由运行时间控制。显示单张图像不会等待长动画,因此按键响应不会被十秒采样窗口整体阻塞。

每次算出平均值后,样本列表清空,下一组重新收集。这是彼此不重叠的采样窗口,不是每秒更新一次的滑动平均。窗口更大通常意味着响应更慢,不应只追求显示稳定。

验证方法

可以先复制一份程序作为逻辑验证版,仅在副本中把读取温度的语句替换为:

samples.append(20 if baseline is None else 23)

重新下载后,第一组建立二十度基准,下一组平均值为二十三度,应显示上箭头。把二十三改成十七,再重新下载,应显示下箭头;改成二十一,应保持横线。这些数值是模拟输入,用来核对判断逻辑,不代表实际测得的环境温度。

验证完成后恢复真实温度读取语句并重新下载。再检查 A 键是否能让显示回到等待点,并在新窗口完成后显示横线。注意重新上电也会丢弃基准,这是本程序的预期行为。

常见错误

一直显示等待点,先确认是否反复按了 A 键,或者电源连接不稳定。程序在重新建立基准期间不会输出方向箭头,需要耐心等待整个窗口完成。

读数比室温高,并不一定是算法算错,可能与芯片自身温度有关。平均值出现小数也不意味着测量精度提高到了小数位。如果偏差在阈值附近徘徊,箭头仍可能在相邻窗口切换;当前版本没有加入迟滞区间。

修改程序出现错误图案时,应核对缩进、英文标点和名称大小写。不要同时修改窗口、间隔和阈值,先一次只改一个参数,观察其影响。

安全与回退

项目使用主板正常 USB 低压供电,不外接负载。需要检查、清理或增加连线时,先断开电源;若以后扩展外部发光器件,必须另行计算限流,不能直接接到供电引脚。

主板应远离金属杂物、液体和高温表面。撤销实验时,下载此前备份的程序即可。基准只保存在运行内存中,断电后不会留下温度记录,也不涉及长期存储与数据清理。

参考资料与转载说明

本文依据上述公开资料进行中文原创整理,不是逐句翻译,也不替代厂商手册。操作前请核对自己的版本、型号和备份。

评论一下?

OωO
取消