2016-07-16 20 views
-1

Ich bin ein komplettes noob, wenn es um Python und die Raspberry Pi-Einheit geht, aber ich finde es heraus.Raspberry-pi - DHT11 + Relais-Trigger

Ich arbeite an einem Skript, um die aktuelle Temperatur meines Gewächshauses, das ich baue, zu überwachen. Wenn die Temperatur auf 28 ° C ansteigt, würde ich gerne mein Relais aktivieren, das den Lüfter einschaltet. Bei 26C sollte das Relais ausgeschaltet werden.

Bauen Info: Raspberry Pi 3 dht11 tempurature - GPIO-Pin 20 einzige Relaiskarte - GPIO-Pin 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) 

Die aktuellen Fehler Ich erhalte:

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

Python verwendet Einzug, um Blöcke zu gruppieren. Lesen Sie https://docs.python.org/release/3.4.3/tutorial/introduction.html#first-steps-towards-programming und verwenden Sie einen Python-fähigen Editor. Dann füge vier Leerzeichen unterhalb der Zeile 'while True:' hinzu. – Dietrich

Antwort

1

Für die laufenden Fehler Sie stehen vor der Tatsache, dass Python setzt schwer auf Einrückung. Es ist nicht wie andere Sprachen wie C++ und Java, die geschweifte Klammern verwenden, um Anweisungen anzuordnen.

den Einzug in Ihrem Code zu beheben, finden Sie unter:

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) 

In jeder if, else, elif, for oder while Anweisung, den Code, den Sie ausführen möchten, innerhalb der Anweisung eingerückt werden muss damit es ausgeführt wird, sonst erhalten Sie den Fehler, den Sie gerade sehen.

Es gibt ein paar mehr Fehler in Ihrem Code, aber ich lasse Sie den Rest herausfinden! Willkommen bei der Programmierung in Python und mit Raspberry Pi.

+0

Danke, Der Lehrling! – tommygee123

+0

Was mich wirklich abschreckt, ist die Tatsache, dass ich Skript durch die erste Zeile mit der if-Anweisung darin läuft, aber mit der else-Anweisung festsitzt und sich über einen Syntaxfehler beschwert: pi @ raspberrypi: ~ /htt11_python/DHT11_Python -master $ python ghouse.py File "ghouse.py", Zeile 26 anderes Ergebnis tommygee123

+0

Fortschritt: 'code' – tommygee123

Verwandte Themen