在主函数中,我有一个爆震传感器,运行它的下一个函数,在下一个函数中,我使用了irq()。但是在secend函数中,irq不起作用。如何解决呢?或使用其他方式?
我希望设备处于待机模式并通过敲门运行enter_password()函数。 敲一敲,enter_password()开始。完成后进入待机模式,等待新的敲击再次运行enter_password()。
一击必须运行enter_password()并通过5次循环从用户那里获得密码。每一次循环给出1或2或...或9击。
例如: 1敲>>运行应用程序>>运行enter_password()
对于我范围4 >> 5循环
循环1 >> 1敲>>我的通行证>> 1
循环2 >> 7响>>我的通行证>> 17
loop3 >> 4响>>我的通行证>> 174
循环4 >> 0敲>>我的通行证>> 1740
循环5 >> 2响>>我的通行证>> 17402
我的通行证>> 17402
如果确定>>通过我的数据库中的另一个函数打开#serach的门,然后返回确定或不确定 其他>>没什么
进入待机状态,等待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
答案 0 :(得分:0)
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)