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

如何为micro:bit V2加载库?编写ds18b20库遇datetime导入错误

问题

近期我在为micro:bit编写DS18B20传感器库时遇到了问题,代码里尝试调用datetime库,但运行时报错。代码如下:

from microbit import *
from datetime import datetime


class DS18B20:
    def __init__(self, pin):
        self.pin = pin

    def sleep_us(self, us):
        lasttime = running_time() / 1000
        nowtime = running_time() / 1000
        while (nowtime - lasttime) < us:
            nowtime = running_time() / 1000

    def DS18B20Reset(self):
        self.pin.write_digital(0)
        self.sleep_us(750)
        self.pin.write_digital(1)
        self.sleep_us(15)

    def DS18B20WriteByte(self, data):
        _data = 0
        for i in range(8):
            _data = data & 0x01
            data >>= 1
            if _data:
                self.pin.write_digital(0)
                self.sleep_us(2)
                self.pin.write_digital(1)
                self.sleep_us(60)
            else:
                self.pin.write_digital(0)
                self.sleep_us(60)
                self.pin.write_digital(1)
                self.sleep_us(2)

运行后出现错误:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
ImportError: no module named 'datetime'

请问如何为micro:bit V2加载所需库,解决该导入错误?

解决方法

  1. 移除无用导入
    你的代码里并未实际使用datetime库,只是做了导入操作,直接删掉from datetime import datetime这一行即可解决当前的导入错误。

  2. 替换自定义延时函数为内置函数
    你手动实现的sleep_us函数完全可以用micro:bit模块内置的sleep_us()替代,无需自己写循环计时,修改后代码更简洁可靠:

    from microbit import *
    
    
    class DS18B20:
        def __init__(self, pin):
            self.pin = pin
    
        def DS18B20Reset(self):
            self.pin.write_digital(0)
            sleep_us(750)
            self.pin.write_digital(1)
            sleep_us(15)
    
        def DS18B20WriteByte(self, data):
            _data = 0
            for i in range(8):
                _data = data & 0x01
                data >>= 1
                if _data:
                    self.pin.write_digital(0)
                    sleep_us(2)
                    self.pin.write_digital(1)
                    sleep_us(60)
                else:
                    self.pin.write_digital(0)
                    sleep_us(60)
                    self.pin.write_digital(1)
                    sleep_us(2)
    
  3. 若需日期时间功能的处理方式
    micro:bit的MicroPython是精简环境,没有内置标准datetime库,如果之后确实需要日期时间相关功能:

    • 优先用micro:bit自带的时间函数:比如running_time()(返回开机以来的毫秒数)、time()(配合RTC使用,返回特定时间点起的秒数)
    • 若需要完整日期时间处理,需找到适配micro:bit的第三方datetime库(.py格式),将该库文件和主代码一起上传到micro:bit设备,之后即可正常导入使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:20:34