初始化提交

This commit is contained in:
王立帮
2024-07-19 10:16:00 +08:00
parent 4c7b571f20
commit 4a2d56dcc4
7084 changed files with 741212 additions and 63 deletions

View 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