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 上使用 Python 从传感器存储数据的最有效方法
如何从 Raspberry Pi Zero 向 PC 发送实时传感器数据?
c_cpp 在Raspberry Pi上使用Microchip的TC74 I2C温度传感器的有用代码
带有温度传感器的 SocketIO - 我几乎在我的 Raspberry Pi 上使用 NodeJS 和 SocketIO 完成了 DS18B20,如何提取 Promise data ?