Raspberry Pi 上多个 PIR 运动传感器的 Python 代码

Posted

技术标签:

【中文标题】Raspberry Pi 上多个 PIR 运动传感器的 Python 代码【英文标题】:Python code for multiple PIR motion sensors on Raspberry Pi 【发布时间】:2019-07-10 13:16:35 【问题描述】:

在树莓派上为一个项目连接最多三个 5v 运动传感器,我对 python 还是很陌生。我已经成功编写了一个运动传感器,它会在检测到运动时点亮 LED 并发出蜂鸣声。如何编写多个传感器,然后点亮不同的 LED?

# Motion detected with buzzer and LED

import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)

#Refer pins by their sequence number on the board
GPIO.setmode(GPIO.BCM)

#Read output from PIR motion sensor
GPIO.setup(18, GPIO.IN)

#LED output pin
GPIO.setup(3, GPIO.OUT)

while True:
    inp = GPIO.input(18)
#When output from motion sensor is HIGH
    if inp == 1:
    print("Motion detected!!")
    GPIO.output(3, 1) #Turn on LED & Buzzer
    time.sleep(1)

#When output from motion sensor in LOW
    elif inp == 0:
    print("No motion, all okay.")
    GPIO.output(3, 0) #Turn off LED & Buzzer
    time.sleep(1)

time.sleep(0.1)

【问题讨论】:

您是否尝试过为第二个传感器重复设置过程并在 while 循环中添加相应的检查? 此代码无效。 “if”和“elif”后面的缩进不见了! 糟糕,我把代码放在上面时弄乱了缩进。缩进在实际代码上是可以的。谢谢。 【参考方案1】:

例如,您应该为传感器创建不同的实例

inp_a = GPIO.input(18)
inp_b = GPIO.input(1x)

等等。

然后你可以检查

if inp_b == 1

你也可以实现多线程

另外,请注意,在 while 循环之后,您的最后一行代码将永远不会被执行。

【讨论】:

我是否将带有 'inp_b' 的新 if 语句放入新的 while 循环中? 只有在使用多线程时才能使用第二个 while 循环,否则您不能必须同时运行“while True”循环。 如果你想保持简单,你应该在同一个while循环中做所有事情

以上是关于Raspberry Pi 上多个 PIR 运动传感器的 Python 代码的主要内容,如果未能解决你的问题,请参考以下文章

Raspberry Pi NoIR 相机挂起

在 Raspberry Pi 上使用 Python 从传感器存储数据的最有效方法

如何从 Raspberry Pi Zero 向 PC 发送实时传感器数据?

c_cpp 在Raspberry Pi上使用Microchip的TC74 I2C温度传感器的有用代码

带有温度传感器的 SocketIO - 我几乎在我的 Raspberry Pi 上使用 NodeJS 和 SocketIO 完成了 DS18B20,如何提取 Promise data ?

python 使用Raspberry Pi从DS18B20传感器中获取价值