首页 / 树莓派 / 树莓派读取DHT11传感器的源代码
树莓派读取DHT11传感器的源代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了树莓派读取DHT11传感器的源代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
import wiringpi2 as gpio owpin=8 #第8脚为1-wire脚def getval(owpin): tl=[] #存放每个数据位的时间 tb=[] #存放数据位 gpio.wiringPiSetup() #初始化wiringpi库 gpio.pinMode(owpin,1) #设置针脚为输出状态 gpio.digitalWrite(owpin,1) #输出高电平 gpio.delay(1) gpio.digitalWrite(owpin,0) #拉低20ms开始指令 gpio.delay(25) gpio.digitalWrite(owpin,1) #抬高20-40us gpio.delayMicroseconds(20) gpio.pinMode(owpin,0) #设针脚为输入状态while(gpio.digitalRead(owpin)==1): pass#等待DHT11拉低管脚for i in range(45): #测试每个数据周期的时间(包括40bit数据加一个发送开始标志 tc=gpio.micros() #记下当前us数(从初始化开始算起,必要时重新初始化)‘‘‘ 一个数据周期,包括一个低电平,一个高电平,从DHT11第一次拉低信号线开始 到DHT11发送最后一个50us的低电平结束(然后被拉高,一直维持高电平,所以 最后的完成标志是一直为高,超过500ms) ‘‘‘while(gpio.digitalRead(owpin)==0):passwhile(gpio.digitalRead(owpin)==1): if gpio.micros()-tc>500: #如果超过500ms就结束了breakif gpio.micros()-tc>500: #跳出整个循环break tl.append(gpio.micros()-tc) #记录每个周期时间的us数,存到tl这个列表# print(tl) #反注释后可打印时间列表 tl=tl[1:] #去掉第一项,剩下40个数据位for i in tl: if i>100: #若数据位为1,时间为50us低电平+70us高电平=120us tb.append(1) else: tb.append(0) #若数据位为0,时间为50us低电平+25us高电平=75us#这里取大于100us就为1 # print(tb) #反注释可查看每一位状态return tb def GetResult(owpin): for i in range(10): SH=0;SL=0;TH=0;TL=0;C=0 result=getval(owpin) # print(len(result))if len(result)==40: for i in range(8): #计算每一位的状态,每个字8位,以此为湿度整数,湿度小数,温度整数,温度小数,校验和 SH*=2;SH+=result[i] SL*=2;SL+=result[i+8] TH*=2;TH+=result[i+16] TL*=2;TL+=result[i+24] C*=2;C+=result[i+32] if ((SH+SL+TH+TL)%256)==C and C!=0: breakelse: print("Read Sucess,But checksum error! retrying") else: print("Read failer! Retrying") gpio.delay(200) return SH,SL,TH,TL SH,SL,TH,TL=GetResult(owpin) print("湿度:",SH,SL,"温度:",TH,TL)
原文:http://www.cnblogs.com/yafengabc/p/5096184.html
内容总结
以上是互联网集市为您收集整理的树莓派读取DHT11传感器的源代码全部内容,希望文章能够帮你解决树莓派读取DHT11传感器的源代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。