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

如何在micro:bit MicroPython中重置数据记录时间戳

解决micro:bit日志时间戳同步问题:按下Button A重置时间零点

问题描述

希望按下BBC micro:bit的Button A时开始数据记录,让第一条记录的时间戳为0.00(对应外部时钟的指定时刻,如12:10),但当前日志的时间戳零点从设备开机/重置时开始,导致第一条记录时间戳不为0.00。使用带大型开关的Robotbit扩展板时,开机同步的精度不足,需要类似reset_time()的方法来重置时间基准。

解决方案

通过手动维护时间基准的方式,替代log模块自带的timestamp机制:在Button A按下时记录当前设备的运行时间,之后每次记录数据时计算相对该基准的时间差,作为自定义时间戳。

修改后的代码示例

from microbit import *
import log

# 配置日志标签,不使用log模块自带的timestamp
log.set_labels('altitude', 'azimuth', 'measure', 'timestamp')

# 等待Button A按下,记录时间基准
while not button_a.was_pressed():
    pass
base_time = running_time()  # 记录按下时刻的设备运行毫秒数

# 测量循环(替换为实际的遍历逻辑)
for altitude in range(0, 90, 10):
    for azimuth in range(0, 360, 45):
        measure = take_reading()  # 调用实际的读数函数
        # 计算相对时间(转换为秒,保留两位小数)
        relative_timestamp = round((running_time() - base_time) / 1000, 2)
        log.add({
            'altitude': altitude,
            'azimuth': azimuth,
            'measure': measure,
            'timestamp': relative_timestamp
        })
        sleep(100)  # 根据实际需求调整间隔

关键说明

  • running_time():返回micro:bit开机后的累计毫秒数,精度可靠
  • 自定义timestamp:每次记录时计算当前时间与基准时间的差值,转换为秒后作为时间戳,确保第一条记录的时间戳接近0.00(误差仅来自按键反应和代码执行延迟,远小于开机同步误差)
  • 移除log模块自带的timestamp=log.SECONDS配置,避免与自定义timestamp冲突

内容的提问来源于stack exchange,提问作者Luis López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:31:39