from machine import Pin
import time
# Entrée (bouton / capteur)
in_pin = Pin(14, Pin.IN, Pin.PULL_DOWN)
# --- Routine d'interruption (ISR) ---
def isr(pin):
# flags() ne marche que DANS l'ISR
f = irq.flags()
# Les flags correspondent aux événements (RISING/FALLING)
if f & Pin.IRQ_RISING:
print("ISR: Front montant (RISING) détecté")
if f & Pin.IRQ_FALLING:
print("ISR: Front descendant (FALLING) détecté")
# Création de l'interruption -> irq est un objet IRQ
irq = in_pin.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=isr)
print("Interruption active (RISING + FALLING).")
# --- Démo des méthodes demandées ---
time.sleep(2)
print("\n1) irq.disable() -> on désactive l'interruption 3 secondes")
#irq.disable()
time.sleep(3)
print("2) irq.enable() -> on réactive l'interruption")
#irq.enable()
time.sleep(2)
print("\n3) irq.init() -> on ré-initialise (par ex: seulement RISING)")
irq.init(trigger=Pin.IRQ_RISING, handler=isr)
time.sleep(2)
print("\n4) irq() -> appel manuel de l'ISR (simulation)")
irq() # appelle le handler comme si un événement s’était produit
time.sleep(2)
print("\nBoucle principale...")
while True:
time.sleep(1)