Ich habe Probleme beim Programmieren der Logik von 2 PIR Sensoren, um eine Nachricht in der Konsole zu drucken, wenn ein Benutzer beide Hände auf die PIR Sensoren legt PIR-Sensoren an den Raspberry Pi mit GPIO, GND und 5V-Port. Der Code, den ich momentan habe, druckt eine Nachricht in der Konsole aus, wenn jemand dort hinüber winkt, aber ich habe Schwierigkeiten, den Code zu ändern, um eine Fehlermeldung auszugeben, wenn jemand seine Hand auf beide PIR-Sensoren schwenkt.NameError: Name 'TRUE' ist nicht definiert PIR Sensoren
Wir können Eingabe von dem Sensor mit GP4 lesen und GP17
Dies ist die Fehlermeldung erhalte ich, wenn ich meinen Code ausführen.
Traceback (most recent call last):
File "peter.py", line 22, in <module>
if current_state2(TRUE) and current_state(TRUE) != previous_state2(FALSE) and previous_state(FALSE):
NameError: name 'TRUE' is not defined
Dies ist der Code
import RPi.GPIO as GPIO
import time
sensor = 4
sensor2 = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)
GPIO.setup(sensor2, GPIO.IN, GPIO.PUD_DOWN)
previous_state = False
current_state = False
previous_state2 = False
current_state2 = False
while True:
time.sleep(0.1)
previous_state = current_state
previous_state2 = current_state2
current_state = GPIO.input(sensor)
current_state2 = GPIO.input(sensor2)
if current_state2(TRUE) and current_state(TRUE) != previous_state2(FALSE) and previous_state(FALSE):
new_state = "HIGH" if current_state else "LOW"
new_state2 = "HIGH" if current_state2 else "LOW"
print("GPIO pin %s is %s" % (sensor, new_state, sensor2, new_state2))
Das Programm ist ziemlich einfach. Die GPIO-Pins des Raspberry Pi ermöglichen es uns, Pin 4 als Eingabe zu verwenden; Es kann dann erkennen, wenn das PIR-Modul Strom sendet. Der Pin prüft ständig auf Änderungen, verwendet dafür eine True-Schleife. Dies ist eine Endlosschleife, so dass das Programm kontinuierlich ausgeführt wird, es sei denn, wir stoppen es manuell mit Strg + C. Verwenden Sie dann zwei boolesche Variablen (Wahr oder Falsch) für den vorherigen und aktuellen Zustand des Pins, wobei der vorherige Zustand der aktuelle Zustand war die vorhergehende Zeit um die Schleife
Entferne ich while und weise eine "if" Anweisung zu? –
Rasmus Friis Kjeldsen, Die Anweisung muss umlaufen, also entferne ich die while-Anweisung? –
Nein, behalte das nur! –