初始化提交
This commit is contained in:
60
boards/default_src/micropython/origin/build/lib/dhtx.py
Normal file
60
boards/default_src/micropython/origin/build/lib/dhtx.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# DHT11/DHT22 driver for MicroPython
|
||||
# MIT license; Copyright (c) 2016 Damien P. George
|
||||
|
||||
from time import sleep
|
||||
try:
|
||||
from esp import dht_readinto
|
||||
except:
|
||||
from machine import dht_readinto
|
||||
from machine import Pin
|
||||
|
||||
class DHTBase:
|
||||
__species = {}
|
||||
__first_init = True
|
||||
def __new__(cls, pin, *args, **kwargs):
|
||||
if pin not in cls.__species.keys():
|
||||
cls.__first_init = True
|
||||
cls.__species[pin] = object.__new__(cls)
|
||||
return cls.__species[pin]
|
||||
|
||||
def __init__(self, pin):
|
||||
if self.__first_init:
|
||||
self.__first_init = False
|
||||
self.pin = Pin(pin)
|
||||
self.buf = bytearray(5)
|
||||
self.err = 0
|
||||
|
||||
def measure(self):
|
||||
buf = bytearray(5)
|
||||
try:
|
||||
dht_readinto(self.pin, buf)
|
||||
if (buf[0] + buf[1] + buf[2] + buf[3]) & 0xFF == buf[4]:
|
||||
self.buf = buf
|
||||
self.err = 0
|
||||
except:
|
||||
if self.err > 10:
|
||||
raise AttributeError("DHTx operation error")
|
||||
self.err += 1
|
||||
sleep(0.5)
|
||||
return
|
||||
|
||||
class DHT11(DHTBase):
|
||||
def humidity(self):
|
||||
self.measure()
|
||||
return self.buf[0]
|
||||
|
||||
def temperature(self):
|
||||
self.measure()
|
||||
return self.buf[2]
|
||||
|
||||
class DHT22(DHTBase):
|
||||
def humidity(self):
|
||||
self.measure()
|
||||
return (self.buf[0] << 8 | self.buf[1]) * 0.1
|
||||
|
||||
def temperature(self):
|
||||
self.measure()
|
||||
t = ((self.buf[2] & 0x7F) << 8 | self.buf[3]) * 0.1
|
||||
if self.buf[2] & 0x80:
|
||||
t = -t
|
||||
return t
|
||||
Reference in New Issue
Block a user