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

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 3955
注册时间: 2019年 10月 21日 13:48

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

#1

帖子 shaoziyang »

新版本的mpy,对单总线驱动做出了非常大的改动,造成以前的程序都无法使用了。即使换用旧的DS18X20驱动,也无法在新固件下使用。

下面简单介绍新的单总线驱动使用方法:

先定义onewire对象,可以使用任意GPIO

代码: 全选

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)

头像
shaoziyang
帖子: 3955
注册时间: 2019年 10月 21日 13:48

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

#2

帖子 shaoziyang »

如果只有一个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

头像
shaoziyang
帖子: 3955
注册时间: 2019年 10月 21日 13:48

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

#3

帖子 shaoziyang »

新的单总线驱动好处:
  • 使用C语言实现了单总线的底层驱动,做到和系统频率、MCU速度无关,不用调整延时参数,性能更好。

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章