mit dem folgenden Script schalte ich beim Drücken eines Tasters über einen Interrupt eine LED ein
und beim loslassen wieder aus. Pin 5 ist initial auf HIGH (1) und geht beim Drücken des Tasters auf
LOW (0) und dementsprechend ist der irq Parameter trigger = Pin.IRQ_FALLING gesetzt:
(ich habe die while Schleife limitiert um bei einem Fehler im Code nicht in eine endlos Schleife zu kommen)
Code: Alles auswählen
from machine import Pin
from time import sleep
def handle_interrupt(pin):
global key_pressed
key_pressed = True
led=Pin(2,Pin.OUT)
button1=Pin(5, Pin.IN)
button1.irq(trigger=Pin.IRQ_FALLING, handler = handle_interrupt)
n = 0
while n < 10:
print('initial value:', button1.value())
sleep(2)
if key_pressed:
print('Interrupt detected')
led.value(0)
key_pressed = False
if button1.value() == 0:
led.value(1)
n += 1
auf 1 geht, wie das print statement anzeigt. Sollte m.e. nicht sein.
2. Es ist mir auch nicht klar warum ich im Haupt Code den led.value zuerst auf 0 und für das Loslassen
auf 1setzten muss, damit es funktioniert.