В данном уроке мы настроим внешнее прерывание, прерывания поддерживаются через следующую функцию:
N.irq (trigger, handler), где:
N — номер ножки, которая будет настроена на прерывание. В микроконтроллере ESP8266 можно подключить любые ножки на прерывания кроме GPIO16;
trigger — определяет условие, при котором должно срабатывать прерывание:
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)
При нажатии кнопки — наступит прерывание основной программы, кроме изменения состояния светодиода на экране Вы увидите: