irq() 中的 运行 irq() 是怎样的?或者在第二个 irq 上禁用一个 irq?

how run irq() in irq() ? or disable one irq on secend irq?

我在主要功能中有一个爆震传感器,触摸它 运行 下一个功能,在下一个功能中我使用了 irq()。但在第二个功能中没有工作 irq。怎么修???或者使用其他方式??

我希望设备处于待机模式,并且 运行 enter_password() 通过敲击功能。 按一次敲门,enter_password() 开始。完成后进入待机模式,等待再次敲门到 运行 enter_password()。

按一次敲门必须 运行 enter_password() 并通过 5 个循环从用户处获取密码。每个循环给出 1 或 2 或 ...或 9 敲门。

例如: 1knock >> 运行 应用程序 >> 运行 enter_password()

for i range 4 >> 5 loop

loop 1 >>1knock >>my pass >> 1

loop 2 >> 7knock >>my pass >> 17

loop3 >> 4knock >>我的通行证 >> 174

loop 4 >> 0knock >>my pass >> 1740

loop 5 >> 2knock >>my pass >> 17402

我的通行证 >> 17402

if ok >> open door #serach by another function in my db 和 return ok or not ok 其他>>无

然后进入待机状态,等待 1 次敲击 运行 应用程序,一次又一次。

我在 nodemcu 上使用 micropython。 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

def main():
    starter = Pin(5, Pin.IN)
    webserver()
    while True:
        if starter.value()==1:   #use while anf if for one IRQ
            print("enter password fun")
            led_on_off(3,600)
            p5 = Pin(5, Pin.IN)
            door_password=""
            for i in range(5):
                print("range %i" %i)
                global num_kenok
                num_kenok = 0
                chk_time = utime.time() + 12
                while utime.time() <= chk_time:
                    p5.irq(trigger=Pin.IRQ_RISING ,  handler=callback )
                door_password += str(num_kenok)
                led_on_off(1,500)
            led_on_off(5,300)
            find_password(door_password)