按特定顺序触发的 PIR 传感器
PIR Sensors Triggered in Specific Order
在我的设计中,我有两个 PIR 传感器连接到一个 Raspberry Pi 用于门口两侧的传感器。
我需要有关一旦按特定顺序触发传感器后如何做某事的帮助。
为简单起见,我们将传感器称为 A 和 B。
因为它们将用于房间计数,所以我希望在按 AB 顺序触发时增加计数,在按 BA 顺序触发时减少计数。
我之前尝试过此代码但失败了(我知道这里没有实现 roomCount 但我正在测试预期输出):
While True:
if GPIO.input(pir1):
if GPIO.input(pir2):
print(“AB”)
if GPIO.input(pir2):
if GPIO.input(pir1):
print(“BA”)
无论触发顺序如何,这段代码都会不断地给出输出“AB”。
如能就此问题提供任何帮助,我们将不胜感激。
您可以尝试这样的操作:
condition = "" #create empty string
counter=0 #create counter :)
while True:
if GPIO.input(pir1):
condition+="A" #add char to it
if GPIO.input(pir2):
condition+="B" #add another char to it
if "AB" in condition:
counter += 1
condition="" #reset the string
elif "BA" in condition:
counter -= 1
condition="" #reset the string
希望对您有所帮助。
我认为你可以用更像这样的代码做得更好 pseudo-code:
import time
maxWait = 2 # Longest time (in seconds) to wait for other PIR to trigger
while True:
if A is triggered:
endTime = time.time() + maxWait
while time.time() < endTime:
if B is triggered:
print("AB")
# Sleep till the person has fully passed both sensors
while A is triggered or B is triggered:
sleep(0.1)
if B is triggered:
endTime = time.time() + maxWait
while time.time() < endTime:
if A is triggered:
print("BA")
while A is triggered or B is triggered:
sleep(0.1)
在我的设计中,我有两个 PIR 传感器连接到一个 Raspberry Pi 用于门口两侧的传感器。
我需要有关一旦按特定顺序触发传感器后如何做某事的帮助。
为简单起见,我们将传感器称为 A 和 B。
因为它们将用于房间计数,所以我希望在按 AB 顺序触发时增加计数,在按 BA 顺序触发时减少计数。
我之前尝试过此代码但失败了(我知道这里没有实现 roomCount 但我正在测试预期输出):
While True:
if GPIO.input(pir1):
if GPIO.input(pir2):
print(“AB”)
if GPIO.input(pir2):
if GPIO.input(pir1):
print(“BA”)
无论触发顺序如何,这段代码都会不断地给出输出“AB”。
如能就此问题提供任何帮助,我们将不胜感激。
您可以尝试这样的操作:
condition = "" #create empty string
counter=0 #create counter :)
while True:
if GPIO.input(pir1):
condition+="A" #add char to it
if GPIO.input(pir2):
condition+="B" #add another char to it
if "AB" in condition:
counter += 1
condition="" #reset the string
elif "BA" in condition:
counter -= 1
condition="" #reset the string
希望对您有所帮助。
我认为你可以用更像这样的代码做得更好 pseudo-code:
import time
maxWait = 2 # Longest time (in seconds) to wait for other PIR to trigger
while True:
if A is triggered:
endTime = time.time() + maxWait
while time.time() < endTime:
if B is triggered:
print("AB")
# Sleep till the person has fully passed both sensors
while A is triggered or B is triggered:
sleep(0.1)
if B is triggered:
endTime = time.time() + maxWait
while time.time() < endTime:
if A is triggered:
print("BA")
while A is triggered or B is triggered:
sleep(0.1)