新版本单总线驱动和DS18x20的使用方法

新版本的mpy,对单总线驱动做出了非常大的改动,造成以前的程序都无法使用了。即使换用旧的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

发表评论

电子邮件地址不会被公开。 必填项已用*标注