У меня есть датчик детонации, когда он в основной функции, то есть он запускает следующую функцию, а в следующей функции я использую irq (), но не работаю irq в функции secend. как это исправить ??? или использовать другой способ ??
Я хочу, чтобы устройство находилось в режиме ожидания и запускало функцию enter_password () с помощью стука.
одним нажатием запускается enter_password (). после завершения перейдите в режим ожидания и дождитесь повторного запуска нового удара enter_password ().
одним ударом необходимо запустить enter_password () и получить пароль от пользователя по 5 циклам. Каждый цикл дает 1 или 2 или ... или 9 ударов.
Например:
1knock >> запустить приложение >> запустить enter_password ()
для диапазона i 4 >> 5 петель
цикл 1 >> 1 стук >> мой проход >> 1
петля 2 >> 7knock >> мой проход >> 17
loop3 >> 4knock >> мой проход >> 174
цикл 4 >> 0 стук >> мой проход >> 1740
петля 5 >> 2 стука >> мой проход >> 17402
мой пропуск >> 17402
если все в порядке >> откройте дверь #serach с помощью другой функции в моей базе данных и вернитесь в порядке или не в порядке
еще >> ничего
и перейдите в режим ожидания и подождите 1 стук, чтобы запустить приложение, и снова и снова.
я использую micropython на nodemcu. tnx за помощь
num_knock = 0
def main():
.
.
.
while True:
P5 = Pin(5, Pin.IN)
P5.irq(trigger=Pin.IRQ_RISING , handler=enter_password() ) //ONE IRQ
def enter_password(P):
print("enter password starting")
p5 = Pin(5, Pin.IN)
door_password=""
for i in range(5):
global num_knock
num_knock = 0
chk_time = utime.time() + 12
while utime.time() <= chk_time:
p5.irq(trigger=Pin.IRQ_RISING , handler=callback ) #TWO IRQ - BUT NOT WORK - not call callback
door_password += str(num_knock )
return
def callback(p):
global num_knock
if num_knock < 9 :
num_knock += 1
led_num_knock = Pin(4, Pin.OUT)
led_num_knock.on()
utime.sleep_ms(200)
led_num_knock.off()
return