Python 树莓pi运动传感器输入信号

Python 树莓pi运动传感器输入信号,python,raspberry-pi,alarm,motion,Python,Raspberry Pi,Alarm,Motion,我正在为我的家庭安全系统编写简单的脚本。它由按钮、led、蜂鸣器和传感器组成。它的工作原理如下: -按下按钮,-警报功能打开,-它检测到我一切正常,-再次按下按钮,-警报关闭直到精细-再次按下按钮-问题是:当警报关闭时,如果警报前面有一个波浪,它仍然捕捉到运动,以某种方式保持该信号,警报打开后的第一件事是发现信号,即使传感器没有发出信号 希望我解释清楚。代码如下: import RPi.GPIO as GPIO import time import os from itertools impor

我正在为我的家庭安全系统编写简单的脚本。它由按钮、led、蜂鸣器和传感器组成。它的工作原理如下: -按下按钮,-警报功能打开,-它检测到我一切正常,-再次按下按钮,-警报关闭直到精细-再次按下按钮-问题是:当警报关闭时,如果警报前面有一个波浪,它仍然捕捉到运动,以某种方式保持该信号,警报打开后的第一件事是发现信号,即使传感器没有发出信号

希望我解释清楚。代码如下:

import RPi.GPIO as GPIO
import time
import os
from itertools import cycle
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(04, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)#switch
GPIO.setup(17, GPIO.OUT)#led
GPIO.setup(18, GPIO.OUT)#buzzer
GPIO.setup(21, GPIO.IN)#sensor


#### definicje funkcji #####
############################
############################

def led_on(czas):
    GPIO.output(17,1)
    time.sleep(czas)
    GPIO.output(17,0)
    return;
#led_on(10)

############################

def buzzer_on(czas):
    GPIO.output(18,1)
    time.sleep(czas)
    GPIO.output(18,0)
    return;
#buzzer_on(0.1)
############################
def alarm_on():
    print "alarm on"
    while True:
        if (GPIO.input(21)):
            print "spotted!"
            buzzer_on(0.1)
            led_on(0.1)
            time.sleep(1)
        if (GPIO.input(04) == 1):
            next(wlacznik)
            alarm_off();
            led_on(1)
            break
    return;

def alarm_off():
    print "alarm off"
    return;

############################

########################################### PROGRAM ###########################################
###############################################################################################
###############################################################################################

### WLACZNIK_ALARMU ######


wlacznik = cycle(range(2))
print "wartosc wlacznika:"
print next(wlacznik)
prev_input = 0   #toggle dla przycisku


while True:
  input = GPIO.input(04)
  #if the last reading was low and this one high, print
  if ((not prev_input) and input):
      print("Button pressed")
      if (next(wlacznik) == 1):
          led_on(0.1)
          time.sleep(0.1)
          led_on(0.1)
          time.sleep(1)
          alarm_on();
  #update previous input
  prev_input = input
  #slight pause to debounce
  time.sleep(0.05)

########################################### KONIEC ############################################
GPIO.cleanup()

当警报再次打开时,您的传感器是否可能仅仅检测到一种状态,使其返回真实状态?它是一个有着像锁存器一样的内存的传感器,需要一个信号才能恢复到它的原始状态吗?是的,事实上,现在我开始相信python代码是好的,当我按下开关时的微振动就是问题所在。。