-
大小: 2KB文件类型: .rar金币: 2下载: 2 次发布日期: 2021-06-14
- 语言: Python
- 标签: MicroPython ds18x20 onewire pyb
资源简介
MicroPython源码库,DS18B20数字温度传感器驱动(ds18x20.py)与单总线驱动(onewire.py)。
代码片段和文件信息
# DS18x20 temperature sensor driver for MicroPython.
# MIT license; Copyright (c) 2016 Damien P. George
from micropython import const
_CONVERT = const(0x44)
_RD_SCRATCH = const(0xBE)
_WR_SCRATCH = const(0x4E)
class DS18X20:
def __init__(self onewire):
self.ow = onewire
self.buf = bytearray(9)
def scan(self):
return [rom for rom in self.ow.scan() if rom[0] in (0x10 0x22 0x28)]
def convert_temp(self):
self.ow.reset(True)
self.ow.writebyte(self.ow.SKIP_ROM)
self.ow.writebyte(_CONVERT)
def read_scratch(self rom):
self.ow.reset(True)
self.ow.select_rom(rom)
self.ow.writebyte(_RD_SCRATCH)
self.ow.readinto(self.buf)
if self.ow.crc8(self.buf):
raise Exception(“CRC error“)
return self.buf
def write_scratch(self rom buf):
self.ow.reset(True)
self.ow.select_rom(rom)
self.ow.writebyte(_WR_SCRATCH)
self.ow.write(buf)
def read_temp(self rom):
buf = self.read_scratch(rom)
if rom[0] == 0x10:
if buf[1]:
t = buf[0] >> 1 | 0x80
t = -((~t + 1) & 0xFF)
else:
t = buf[0] >> 1
return t - 0.25 + (buf[7] - buf[6]) / buf[7]
else:
t = buf[1] << 8 | buf[0]
if t & 0x8000: # sign bit set
t = -((t ^ 0xFFFF) + 1)
return t / 16
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1503 2020-04-16 20:06 ds18x20.py
文件 2485 2020-04-16 20:07 onewire.py
----------- --------- ---------- ----- ----
3988 2
- 上一篇:python生成扭曲带干扰验证码
- 下一篇:kNN(python实现)
评论
共有 条评论