在python

时间:2018-06-01 09:04:45

标签: python raspberry-pi iot

基本上我正在研究PIR传感器,当检测到入侵者时它会进入1分钟的睡眠时间。我希望在睡眠时间检测到入侵者时重置此睡眠时间。 以下是代码:

`import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)

try:
    while True:
        i=GPIO.input(18)
        if i==1:
            print("Intruder")
            time.sleep(60)
        elif i==0:
            print("No intruder")
            time.sleep(60)
except KeyboardInterrupt:
    GPIO.cleanup()
    exit(0)`

2 个答案:

答案 0 :(得分:1)

这是使用线程的解决方案:

from threading import Thread, Event
import time

import RPi.GPIO as GPIO


class MyThread(Thread):
    def __init__(self, timeout=60):
        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")
            else:
                print("No intruder")



t = MyThread(60)

GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN)

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)

答案 1 :(得分:0)

没有树莓派可以试试这个,可以在ipython中使用键盘输入。

try:
    while True:
    # i=int(input('input number: '))
    i=int(i=GPIO.input(18))
        if i!=1:
            print("No intruder")
        else:
            print("Intruder")
        time.sleep(60)