本站改版新增arduino频道

Micropython
Arduino

micropython esp32 IO中断


from machine import Pin

import time

import machine


value = 1                     

counter = 0                   


def func(v):

  global value, counter

  time.sleep_ms(50)

  if(button.value() == 0):    #按键未按下

    return 

  while(button.value() == 1): #按键消抖并等待按键松开

    time.sleep_ms(100)

  time.sleep_ms(100)

  counter += 1

  led.value(value)            #设置LED

  value = 0 if value else 1   #翻转LED灯状态

  print("IRQ", counter)


try:

  led = Pin(25, Pin.OUT)      #将led引脚定义为输出

  led.value(0)

  button = Pin(27, Pin.IN)    #将button引脚定义输入

  button.irq(trigger=Pin.IRQ_RISING, handler=func)  #中断(上升沿触发)

  while True:

    pass

except:

  machine.disable_irq()      

实验效果

   采用上升沿触发,每按下按钮一次,数字LED灯都会开关切换,可以看到闪烁效果。



推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号

执行时间: 0.0097498893737793 seconds