Raspberry-pi - DHT11 +继电器触发器

时间:2016-07-16 22:01:17

标签: python raspberry-pi

对于Python和Raspberry Pi单元,我是一个完整的菜鸟,但我正在弄清楚它。

我正在编写一个脚本来监控我正在建造的温室的当前温度。当温度达到28C时,我希望它能激活我的继电器,这将打开风扇。在26C时,继电器应该关闭。

构建信息: 覆盆子3 dht11 tempurature - GPIO引脚20 单继电器板 - GPIO引脚21

import RPi.GPIO as GPIO
import dht11   
import time
import datetime
from time import sleep

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# Set relay pins as output
GPIO.setup(21, GPIO.OUT)

# read data using pin 20
instance = dht11.DHT11(pin=20)

while True:
result = instance.read()
tempHI = 28
tempLOW = 26
if result >= tempHI 
        GPIO.output(21, GPIO.HIGH) #turn GPIO pin 21 on
ifels result < tempLOW
        GPIO.output(21, GPIO.LOW) #Turn GPIO pin 21 off
time.sleep(1)

我目前遇到的错误:

python ghouse.py
File "ghouse.py", line 19
result = instance.read()
^
IndentationError: expected an indented block

1 个答案:

答案 0 :(得分:1)

对于您当前遇到的错误,请记住 Python在缩进时严重依赖 。它与其他语言(如C ++和Java)不同,它使用花括号来排列语句。

要修复代码中的缩进,请参阅以下内容:

import RPi.GPIO as GPIO
import dht11   
import time
import datetime
from time import sleep

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# Set relay pins as output
GPIO.setup(21, GPIO.OUT)

# read data using pin 20
instance = dht11.DHT11(pin=20)

while True:
    result = instance.read()
    tempHI = 28
    tempLOW = 26
    if result >= tempHI:
        GPIO.output(21, GPIO.HIGH) #turn GPIO pin 21 on
    ifels result < tempLOW:
        GPIO.output(21, GPIO.LOW) #Turn GPIO pin 21 off
time.sleep(1)

在任何ifelseelifforwhile语句中,您要执行的代码必须在语句中缩进为了让它运行,否则你将得到你当前看到的错误。

您的代码中还有一些错误,但我会让您弄清楚其余的错误!欢迎使用Python编程并使用Raspberry Pi。