from threading import Thread, Event import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)
GPIO.setup(5,GPIO.OUT)
GPIO.setup(6,GPIO.OUT)
class MyThread(Thread):
def __init__(self, timeout=20):
super(MyThread, self).__init__()
self.intruder_spotted = Event()
self.timeout = timeout
self.daemon = True
def run(self):
while True:
if self.intruder_spotted.wait(self.timeout):
self.intruder_spotted.clear()
print("Intruder")
GPIO.output(5,GPIO.HIGH)
GPIO.output(6,GPIO.HIGH)
else:
print("No intruder")
GPIO.output(5,GPIO.LOW)
GPIO.output(6,GPIO.LOW)
t = MyThread(20)
try:
t.start()
while True:
i=GPIO.input(18)
if i==1:
t.intruder_spotted.set()
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
exit(0)
答案 0 :(得分:0)
尽管该传感器设计用于最高7V的工作电压,但实际上PI SoC的GPIO引脚不能承受5V的电压!这意味着您必须从3.3V上电为传感器供电,或者继续从5V供电,但是在这种情况下,您需要在传感器的输出和Pi的GPIO之间添加一个分压器。
我在数据表中找不到有关低信号电压电平的信息,但是,我认为从3.3V供电给传感器将解决问题。如果没有,您可以使用运算放大器来解决此问题。