Files
mixly3-server/mixly/boards/default/micropython_k210_mixgoai/build/lib/dht11.py

61 lines
1.7 KiB
Python

import time, board
def read_data(pin_name):
data = []
j = 0
time.sleep_ms(1200)
N1 = board.pin(pin_name, board.GPIO.OUT)
N1.value(0)
time.sleep_ms(20)
N1.value(1)
time.sleep_us(30)
N1 = board.pin(pin_name, board.GPIO.IN)
T1 = time.ticks_us()
while N1.value() == 0:
continue
while N1.value() == 1:
T2 = time.ticks_us()
if time.ticks_diff(T2, T1) > 200000:
# raise ValueError("[MixNo]:Sensor read error")
break
continue
while j < 40:
k = 0
while N1.value() == 0:
continue
while N1.value() == 1:
k += 1
if k > 100:
break
if k < 15:
data.append(0)
else:
data.append(1)
j = j + 1
del N1
humidity_bit = data[0:8]
humidity_point_bit = data[8:16]
temperature_bit = data[16:24]
temperature_point_bit = data[24:32]
check_bit = data[32:40]
humidity = 0
humidity_point = 0
temperature = 0.0
temperature_point = 0
check = 0
for i in range(8):
humidity += humidity_bit[i] * 2 ** (7 - i)
humidity_point += humidity_point_bit[i] * 2 ** (7 - i)
temperature += temperature_bit[i] * 2 ** (7 - i)
temperature_point += temperature_point_bit[i] * 2 ** (7 - i)
check += check_bit[i] * 2 ** (7 - i)
tmp = humidity + humidity_point + temperature + temperature_point
# print(humidity_point,temperature_point)
if check == tmp:
# print('temperature is',temperature,'-wet is',humidity,'%')
return (temperature + temperature_point / 10, humidity)
else:
# print('Error:',humidity,humidity_point,temperature,temperature_point,check)
return (None, None)