import time
from machine import Pin
drukknopPin = 18
ledPin = 20
# Ingang met pull-down (intern of extern)
Controledrukknop = Pin(drukknopPin, Pin.IN, Pin.PULL_DOWN)
# LED-uitgang
rodeLed = Pin(ledPin, Pin.OUT)
rodeLed.off()
teller = 0
# ---- Debounce instellingen ----
debounce_ms = 30
# ---- Variabelen voor debounce / event-afhandeling ----
event = False
laatste_irq_ms = 0
def interruptroutine(pin):
global event, laatste_irq_ms
# ISR zo kort mogelijk houden:
# enkel tijdstip onthouden en vlag zetten
laatste_irq_ms = time.ticks_ms()
event = True
# Interrupt op beide flanken (nodig voor betrouwbare debounce)
Controledrukknop.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING,handler=interruptroutine)
try:
while True:
if event == True:
# Wachten tot het gedurende DEBOUNCE_MS stil is
if time.ticks_diff(time.ticks_ms(), laatste_irq_ms) >= debounce_ms:
event = False
# Na debounce opnieuw de knop lezen
# Bij pull-down: 1 = knop is ingedrukt
if Controledrukknop.value() == 1:
# Geldige stijgende flank → toggle LED
rodeLed.toggle()
teller = teller + 1
print("ingedrukt", teller)
# Kleine pauze om CPU-belasting te beperken
time.sleep_ms(1)
except KeyboardInterrupt:
rodeLed.off()