時序圖參考廠家說明書:DHT11數字溼溫度傳感器的原理和應用範例html
四個陣腳鏈接:VCC接3.3伏電源,Dout接GPIO口,我接的是物理12針腳,NC留空,GND接地。python
波折1:電阻被錯接進了VCC,因而看了無數遍時序圖,改了無數遍的驅動不管怎麼改都是讀不出數據。app
波折2:偶然看了網上的DHT11上拉電阻電路圖才發現錯誤,因而果斷去掉電阻。但爲了顯示傳感器工做正常在電源和VCC間接了個發光二極管進去,數據卻是讀出來了,但各類錯誤。(緣由不明)post
去掉了電阻,去掉了led,優化了寫的python,讀數正常。再一次贊一個python。測試
寫DHT11的驅動須要注意時序之間很緊密,python執行任何程序都要花費時間,在獲取時序時須要注意所寫調試用的代碼也是佔用時序的,在這一點上也走了一點彎路。優化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# -*- coding: utf-8 -*-
"""
Created on Sun Jan 26 14:24:43 2014
@author: pi
"""
import
RPi.GPIO as gpio
import
time
gpio.setwarnings(
False
)
gpio.setmode(gpio.BOARD)
time.sleep(
1
)
data
=
[]
def
delay(i):
#20*i usdelay
a
=
0
for
j
in
range
(i):
a
+
1
j
=
0
#start work
gpio.setup(
12
,gpio.OUT)
#gpio.output(12,gpio.HIGH)
#delay(10)
gpio.output(
12
,gpio.LOW)
time.sleep(
0.02
)
gpio.output(
12
,gpio.HIGH)
i
=
1
i
=
1
#wait to response
gpio.setup(
12
,gpio.IN)
while
gpio.
input
(
12
)
=
=
1
:
continue
while
gpio.
input
(
12
)
=
=
0
:
continue
while
gpio.
input
(
12
)
=
=
1
:
continue
#get data
while
j<
40
:
k
=
0
while
gpio.
input
(
12
)
=
=
0
:
continue
while
gpio.
input
(
12
)
=
=
1
:
k
+
=
1
if
k>
100
:
break
if
k<
3
:
data.append(
0
)
else
:
data.append(
1
)
j
+
=
1
print
"Sensor is working"
#get temperature
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
"something is worong the humidity,humidity_point,temperature,temperature_point,check is"
,humidity,humidity_point,temperature,temperature_point,check
|
測試python程序時間代碼spa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# -*- coding: utf-8 -*-
"""
Created on Sun Jan 26 16:01:59 2014
@author: pi
"""
import
time
def
delay(i):
k
=
0
for
j
in
range
(i):
k
+
=
1
n
=
5000
j
=
0
a
=
time.time()
i
=
1
c
=
time.time()
d
=
c
-
a
print
d
a
=
time.time()
for
i
in
range
(n):
j
+
=
1
c
=
time.time()
d
=
c
-
a
print
d
a
=
time.time()
delay(n)
c
=
time.time()
d
=
c
-
a
print
d
|
via調試