首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在irq()中运行irq()?或者在第二个irq上禁用一个irq?

如何在irq()中运行irq()?或者在第二个irq上禁用一个irq?
EN

Stack Overflow用户
提问于 2019-06-04 00:51:34
回答 1查看 135关注 0票数 0

我在main函数中有一个爆震传感器,在next函数中运行它,在next函数中我使用irq().but而不是secend函数中的irq。如何修复它?或者使用其他方式??

我希望设备处于待机模式,并通过敲门运行enter_password()函数。敲门一次,enter_password()启动.after结束进入待机模式,等待新的敲门再次运行enter_password()。

一次敲门必须运行enter_password(),并通过5次循环.every 1或2或...or 9敲门从用户那里获得密码。

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

for I range 4 >> 5循环

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

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

loop3 >> 4Knoke >>my pass >> 174

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

loop 5 >> 2Knoke >>my pass >> 17402

my pass >> 17402

if ok >>通过我的数据库中的另一个函数打开door #serach并返回ok or not,否则>> nothing

然后转到待机状态,等待1次敲门来运行应用程序,然后一遍又一遍。

我在nodemcu上使用micropython。tnx帮助我

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-12 21:32:43

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56431549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档