文档章节

树莓派连接DHT11

素人派
 素人派
发布于 2016/12/31 20:49
字数 306
阅读 189
收藏 0
  • 介绍
DHT11作为一个廉价配件,同时包含了温度、湿度传感器,而且,编码使用也非常简单。 本文介绍如果在树莓派中使用DHT11,代码是Python。如果有任何疑问,欢迎在下面留言。
  • 接线
VCC接5V或者3.3V DATA接GPIO GND接GND
  • 代码
[codesyntax lang="python"]
#!/usr/bin/python

import RPi.GPIO as GPIO
import time

channel = 17
data = []
j = 0

GPIO.setmode(GPIO.BCM)

time.sleep(1)

GPIO.setup(channel, GPIO.OUT)

GPIO.output(channel, GPIO.LOW)
time.sleep(0.02)
GPIO.output(channel, GPIO.HIGH)

GPIO.setup(channel, GPIO.IN)

while GPIO.input(channel) == GPIO.LOW:
	continue

while GPIO.input(channel) == GPIO.HIGH:
	continue

while j < 40:
	k = 0
	while GPIO.input(channel) == GPIO.LOW:
		continue
	
	while GPIO.input(channel) == GPIO.HIGH:
		k += 1
		if k > 100:
			break
	
	if k < 8:
		data.append(0)
	else:
		data.append(1)

	j += 1

print "sensor is working."
print data

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 : ", temperature, ", humidity : " , humidity
else:
	print "wrong"
	print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmp

GPIO.cleanup()
[/codesyntax]
  • 测试
执行命令chmod u+x dht11.py && ./dht11.py
  • 参考
还想知道Arduino怎么连接DHT11呀,这里有文章啊。 树莓派的GPIO接口分布图,这里有。

本文转载自:http://surenpi.com/2015/03/17/%e6%a0%91%e8%8e%93%e6%b4%be%e8%bf%9e%e6%8e%a5dht11/

共有 人打赏支持
素人派
粉丝 22
博文 1906
码字总数 9279
作品 6
东城
程序员
私信 提问

暂无文章

Git cherry-pick 使用总结

应用背景:假设现在有两个分支:dev_01, dev_02. 如果我想把dev_01分支上的某几个commit合并到dev_02分支, 那么怎么办呢? 这就是cherry-pick的工作了。cherry-pick会捡选某些commit, 即把某...

天王盖地虎626
38分钟前
5
0
css动态设置宽高

css 中可以使用 calc() 来动态设置宽高,但是,在表达式中运算符的前后必须要有空格 height:calc(100vh - 80px)

林梓阳
49分钟前
2
0
Git忽略提交规则 - .gitignore配置运维总结

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。简单来说一个场景:在你使用git add ....

二团长的迫击炮
50分钟前
4
0
记录一次用VB合并数据,确实很好用

Sub 合并()Dim row, col, val As DoubleFor row = 1 To 710 Step 1 For col = 1 To 15 Step 1 If IsNumeric(sheet2.Cells(row, col)) And IsNumeric(Sheet3.Cells(row, ......

蓝栩液枫
52分钟前
3
0
多态小笔记

多态背后的思想将‘做什么’和‘谁去做以及怎么去做’分离开来 根本作用是将过程化的条件分支转化为对象的多态,从而消除掉条件分支语句

莫西摩西
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部