树莓派python温湿度检测代码

  • 树莓派python温湿度检测代码

import RPi.GPIO as GPIO #添加头文件包
import time #添加time文件包
def read(channel): #定义读取函数
GPIO.setmode(GPIO.BOARD) #设计引脚
GPIO.setup(channel,GPIO.OUT) #设计channel引脚为输出
GPIO.output(channel,GPIO.LOW) #设计channel引脚为低电平
time.sleep(0.028) #延时0.028秒
GPIO.output(channel,GPIO.HIGH) #设计channel为高电平
GPIO.setup(channel,GPIO.IN) #设计channel为输入
while GPIO.input(channel) == GPIO.LOW: #当channel为低电平结束
continue
while GPIO.input(channel) == GPIO.HIGH: #当channel为高电平结束
continue
data = [] #列表
for j in range(40):
t_flag = 0 #赋值
while GPIO.input(channel) == GPIO.LOW: #判断channel为低电平
pass #弹出
t1 = time.time() #记录当前时间为t1
while GPIO.input(channel) == GPIO.HIGH: #判断channel为高电平
pass
t2 = time.time() #记录当前时间t2
if (t2-t1)*1000000 < 30: #如果值小于30
data.append(0) #输出为0
else: #否则
data.append(1)
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 #赋值温度整数初值为0
humidity_point = 0 #赋值温度小数初值为0
temperature = 0 #赋值湿度整数初值为0
temperature_point = 0 #赋值湿度小数初值为0
check = 0 #赋值校验初值为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) #校验
temper = temperature + temperature_point*0.001
hum = humidity + humidity_point*0.001
tmp = humidity + humidity_point + temperature + temperature_point
if check == tmp: #如果相等
    print("temperature:",temper,"*C,humidity:",hum,"%,check:",check,"tem:",tmp) #输出正确
else: 
    print("wrong") #否则输出错误
    print("temperature:",temper,"*C,humidity:",hum,"%,check:",check,"tem:",tmp)
GPIO.cleanup() #清楚引脚数据
return temper, hum

f = open("/home/pi_hd01.txt",“w”) #打开/home/pi文件夹下的hd01.txt文件
tp = 0 #赋值
hd = 0 #赋值
for i in range(10):
tp,hd = read(12) #调用读取函数
time.sleep(5) #延时5秒
line = “temperature:%.2f*C,humidity:%.2f\n” #显示数据
f.write(line%(tp,hd)) #将数据写到hd01.txt文件
f.close()

你可能感兴趣的:(树莓派)