【发布时间】:2016-05-23 04:07:25
【问题描述】:
每当用户将双手放在 PIR 传感器上时,我无法对 2 个 PIR 传感器的逻辑进行编程以在控制台中打印一条消息。我已成功使用 GPIO、GND 和5v端口。我目前拥有的代码确实会在有人在控制台上挥手时在控制台中打印一条消息,但是当有人在两个 PIR 传感器上挥手时我很难修改代码以打印错误消息。
我们可以使用 GP4 和 GP17 从传感器读取输入
这是我在运行代码时收到的错误消息。
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
这是代码
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))
程序非常简单。 Raspberry Pi GPIO 引脚允许我们使用引脚 4 作为输入;然后它可以检测 PIR 模块何时供电。该引脚不断检查任何更改,为此使用 while True 循环。这是一个无限循环,因此程序将连续运行,除非我们使用 Ctrl + C 手动停止它。然后使用两个布尔变量(True 或 False)来表示引脚的先前和当前状态,先前状态是当前状态循环的前一个时间
【问题讨论】:
标签: android raspberry-pi sensors gpio