新版本的MicroPython,对单总线驱动做出了非常大的改动,造成以前的程序都无法使用了。即使换用旧的DS18X20驱动,也无法在新固件下使用。
下面简单介绍新的单总线驱动使用方法:
- 首先需要更新固件到新版本,并将micropython源码中的onewire.py和ds18x20.py文件复制到pybflash中。
- 在终端中按Ctrl-D复位,使得文件生效。或者从系统中退出pybflash磁盘,然后重新连接。
- 使用下面方法定义单总线对象(下面使用了Y10引脚,可以换成其它引脚)
from machine import Pin import onewire ow=onewire.OneWire(Pin('Y10'))
- 定义DS18X20对象
from ds18x20 import DS18X20 d = DS18X20(ow)
- 使用scan()扫描器件
- 使用convert_temp()启动转换
- 使用read_temp()读取数据
- 每次读取温度,都需要重复上面两步
参考程序:
from machine import Pin import onewire from ds18x20 import DS18X20 import time ow=onewire.OneWire(Pin('Y10')) d = DS18X20(ow) rom = d.scan() while 1: d.convert_temp() d.read_temp(rom[0]) time.sleep_ms(500)
如果只有一个DS18X20,一个更加简单的方法如下:
from machine import Pin import onewire ow=onewire.OneWire(Pin('Y10')) def DS18X20(): ow.reset() ow.writebyte(0xCC) ow.writebyte(0x44) ow.reset() ow.writebyte(0xCC) ow.writebyte(0xBE) d1=ow.readbyte() d2=ow.readbyte() return (d1+d2*256)/16
发表评论