繁体   English   中英

在python中的每个中断后重置睡眠时间

[英]Reset sleep time after every interrupt in python

基本上我正在研究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)`

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

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)

不需要手握树莓派...可以尝试一下,可以在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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM