按特定顺序触发的 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)