просто нужен быстрый совет, если кто-то может помочь. Я закончил код для моего проекта будильника, используя kivy для gui и python для скрипта. Моя проблема, однако, с датчиком движения. Я могу определить, является ли движение высоким или низким без проблем. Есть ли способ, однако, чтобы остановить детектор движения от обнаружения, как в низком или ложном состоянии, скажем, если я введу разоружить вывод. Кажется, как только сигнал тревоги активирован, его нельзя отключить. Код может быть предоставлен по запросу, но я надеюсь, что есть простой способ достичь этого.
def callback(self):
global Activated, Armed
if GPIO.input(11)==False:
Activated = False
Armed = True
elif GPIO.input(11) == True:
Activated = True
Armed = False
else:
pass
if Activated == True:
self.info.text = '!!Intruder Alert!!'
self.info.background_color = [1, 1, 0, 1]
GPIO.output(16,1)
GPIO.output(22, 1)
GPIO.output(18,0)
#self.txt_display.text = ''
#time.sleep(3)
#disarm = int(input('Enter deactivation code'))
else:
pass
def reset_notice(self):
self.info.text = 'Alarm disarmed'
def armAlarm(self):
global Activated, Armed
if self.txt_display.text == str(pincode):
Clock.schedule_once(lambda dt: self.indicated(), 3)
Armed = True
Activated = False
GPIO.output(22, 0)
GPIO.output(18, 1)
GPIO.output(16,1)
time.sleep(0.5)
GPIO.output(16,0)
elif self.txt_display.text != str(pincode):
Armed = False
Activated = False
self.txt_display.text = ''
self.info.text = '**Incorrect Pin**'
self.info.background_color = [1, 1, 1, 1]
Clock.schedule_once(lambda dt: self.reset_notice(), 3)
self.info.background_color = [0, 1, 0, 1]
if Armed == False:
Clock.schedule_interval(lambda dt: self.callback(), 0.5)
else:
self.reset_alarm()
в файле kv, когда я нажимаю кнопку, он запускает функцию armAlarm, если активирован сигнал тревоги, также активируется и pir, и если злоумышленник обнаружен, зуммер отключается, зуммер равен 16.
def disarmAlarm(self):
global Activated, Armed
Armed = True
Activated = False
if Armed == True:
if Activated == False:
if self.txt_display.text == str(pincode):
self.info.text = 'Alarm disarmed'
self.info.background_color = [0, 1, 0, 1]
self.txt_display.text = ''
Armed = False
Activated = False
GPIO.output(16,0)
GPIO.output(22, 0)
GPIO.output(18, 0)
GPIO.setup(11, GPIO.IN)
print('Alarm deactivated')
def disarmAlarm(self):
global Activated, Armed
Armed = True
Activated = True
if Armed == True:
if Activated == True:
if self.txt_display.text == str(pincode):
self.info.text = 'Alarm disarmed'
self.info.background_color = [0, 1, 0, 1]
self.txt_display.text = ''
Armed = False
Activated = False
GPIO.output(16,0)
GPIO.output(22, 0)
GPIO.output(18, 0)
print('Alarm deactivated')
def pir_off(self):
GPIO.input(11) == False
def reset_alarm(self):
global Activated, Armed
Armed = False
Activated = False
if Armed == False:
if Activated == False:
Clock.schedule_interval(lambda dt: self.pir_off(), 0.1)
, и он должен делать это, когда я деактивирую будильник, что теоретически, проблема в том, если я положу руку перед Пир все еще обнаруживает движение. Я хочу, чтобы он вообще не обнаруживал и не искал движение.