新版本的mpy,对单总线驱动做出了非常大的改动,造成以前的程序都无法使用了。即使换用旧的DS18X20驱动,也无法在新固件下使用。
下面简单介绍新的单总线驱动使用方法:
- from machine import Pin
- import onewire
- ow=onewire.OneWire(Pin('Y10'))
复制代码
- 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
复制代码
新的单总线驱动好处:
- 使用C语言实现了单总线的底层驱动,做到和系统频率、MCU速度无关,不用调整延时参数,性能更好。
缺点:
此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处