Урок №11. Пишем программный код для внешнего прерывания на микроконтроллере ESP8266 с помощью языка MycroPython.

В данном уроке мы настроим внешнее прерывание, прерывания поддерживаются через следующую функцию:

N.irq (trigger, handler), где:

— номер ножки, которая будет настроена на прерывание. В микроконтроллере ESP8266 можно подключить любые ножки на прерывания кроме GPIO16;

trigger — определяет условие, при котором должно срабатывать прерывание:

  • ExtInt.IRQ_RISING – срабатывание прерывания по переднему фронту.
  • ExtInt.IRQ_FALLING – срабатывание прерывания по заднему фронту.

handler — функция, которую необходимо вызвать при возникновении прерывания;

В качестве проверки работы прерывания, мы настроем 4 ножку на вход и подключим к ней кнопку,  при нажатии которой мы будем менять состояние светодиода который подключен к ножке 5.

Так же в качестве некого программного кода который работает в основном цикле мы будем мигать светодиодом который находиться на основной плате.

Программный код:

from machine import Pin
import time
ks = 0

def button_interrupt(pin):
     global ks
     if ks == 1:
          led.value(1)
    else:
         led.value(0)
         ks = 0
   ks += 1
   print (‘Interrupt start’)
   print(ks)

led = Pin(5, Pin.OUT)
led1 = Pin(2, Pin.OUT)

but= Pin(4,Pin.IN)

but.irq(trigger=Pin.IRQ_RISING, handler = button_interrupt)
#but.irq(trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING , handler = button_interrupt)

while True:
     led1.on()
     time.sleep_ms(1000)
     led1.off()
     time.sleep_ms(1000)

При нажатии кнопки — наступит прерывание основной программы, кроме изменения состояния светодиода на экране Вы увидите: