Seite 1 von 1

Interrupts in Micropython

Verfasst: Montag 30. November 2020, 14:13
von luemar
Hallo Experten,
möchte meine ziemlich alten elektrischen Rolläden über einen ESP32-S steuern sowohl manuell
über Taster/Schalter wie auch automatisch bzw. zeitgesteuert.

Manuell soll der Rolladen laufen, bzw. das entsprechende Relais schalten solange ich die
entsprechende Tasten drücke.

Ich habe das Script unten gefunden womit ein Relais (aktuell eine LED) bei Tastendruck bzw. aufsteigender Flanke (.....Pin.IRQ_RISING)....am Pin 5 für eine in der Variablen timeOn vorgegebenen Zeit (ein)geschaltetwerden kann.
Wie muss ich das Script ändern, dass beim Loslassen der Taste bzw. absteigender Flanke
(...Pin.IRQ_FALLING...) das Relais wieder zurück bzw. die LED abschaltet.
:geek:

Re: Interrupts in Micropython

Verfasst: Montag 30. November 2020, 14:15
von luemar
jetzt noch das Script dazu:

Code: Alles auswählen

from machine import Pin
from time import sleep

timeOn = 3
key_pressed = False

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_RISING, handler = handle_interrupt)

while True:
  if key_pressed:
    print('Interrupt detected')
    led.value(1)
    sleep(timeOn)
    led.value(0)
    key_pressed = False
  else:
    led.value(0)
[Code]

Re: Interrupts in Micropython

Verfasst: Dienstag 1. Dezember 2020, 12:12
von luemar
bin weiter am Problem bearbeiten:
Wenn ich im obigen Script den Taster loslasse und Pin 5 auf 1 bzw. 3.3V zurückgeht wird ebenfalls ein interrupt
ausgelöst obwohl in Zeile 11 button1.irq(trigger=Pin.IRQ_RISING, .....) eingetragen ist. Sollte doch nicht sein oder ?

Re: Interrupts in Micropython

Verfasst: Dienstag 1. Dezember 2020, 17:46
von __deets__
Öh. Auf 3V3 zu gehen ist doch genau eine steigende Flanke.