ttpyboard驱动DHT11获取温湿度

 库

import pyb
from pyb import UART
from pyb import Pin
import time
class DHT11:
    def __init__(self,pin_name):
        time.sleep(1)
        self.N1 = Pin(pin_name, Pin.OUT_PP)
        self.PinName=pin_name
        pyb.delay(10)
    def read_data(self):
        self.__init__(self.PinName)
        data=[]
        j=0
        N1=self.N1
        N1.low()
        time.sleep(0.03)
        N1.high()
        N1 = Pin(self.PinName, Pin.IN)
        while N1.value()==1:
            continue
        while N1.value()==0:
            continue
        while N1.value()==1:
            continue
        while j<40:
            k=0
            while N1.value()==0:
                continue
            while N1.value()==1:
                k+=1
                if k>100:break
            if k<3:
                data.append(0)
            else:
                data.append(1)
            j=j+1
        print('Sensor is working')
        j=0
        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
        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
        if check==tmp:
            print('temperature is',temperature,'-wet is',humidity,'%')
        else:
            print('Error:',humidity,humidity_point,temperature,temperature_point,check)
        return [str(temperature),str(humidity)]

主程序

import pyb
from pyb import UART
from pyb import Pin
from ubinascii import hexlify
from ubinascii import *
from dht11 import DHT11#定义温湿度传感器的库

ulan = UART(6, 115200 , timeout = 100)#定义串口,我的网口设置了115200的波特率
K=1
#*******************************主程序**********************************
print('while')
while (K>0):
    #init DHT11 
    dht=DHT11('Y11')
    data_=dht.read_data()#读取温湿度的值
    temp=str(data_[0])#温度
    hum=str(data_[1])#湿度
    print('temp:'+temp)
    print('hum:'+hum)
    ulan.write('temperature is:'+temp+'\r\n')#上传温度
    pyb.delay(2000)#做延时是为了让给模拟服务器一个反应时间
    ulan.write('wet is:'+hum+'%'+'\r\n')#上传湿度
    pyb.delay(10000)

 

你可能感兴趣的:(电子设计)