LED an GPIO dauerhaft einschalten

  • Hallo zusammen,


    meine Frage erscheint trivial, jedoch komme ich gerade nicht weiter.


    An meinem RPI4 habe ich zwei LEDs angeschlossen (GPIO20, 21).

    Die LEDs werden über die Bibliothek gpiozero angesteuert:

    Python
    #Bibliothek für den Zugriff auf die GPIOs importieren
    from gpiozero import LED
    #LED für Anzeige der laufenden Messung = GPIO 20 = LED gelb
    led_sample = LED(20)
    #LED für Anzeige Störung = GPIO 21 = LED rot
    led_error = LED(21)
    #Schalte die LED ein, da aktuell eine Messung läuft
    led_sample.on()


    Per Cronjob rufe ich das Programm auf, welches alle 5 min die Temperatur / Luftdruck / Luftfeuchte misst.


    Sobald die Messung der Luftfeuchte mittels Sensor DHT22 fehlschlägt, fange ich die Fehlermeldung ab und schalte eine der beiden LEDs ein (GPIO21):

    Code
    try:
        humidity = round(sensor_h.sample(samples=1)['humidity'],1)
        led_error.off()
    except TimeoutError as error:
        print("ERROR: DHT22 nicht erreichbar.")
        print("Default-Wert für humidity=80 wird gesetzt.")
        print()
        humidity = 80
        led_error.on()

    Sobald das Programm durchgelaufen ist, erlischt die LED allerdings wieder.


    Wie schaffe ich es, dass die LED dauerhaft an bleibt (nämlich so lange, bis wieder die nächste erfolgreiche Messung über den DHT22 gelaufen ist) ?

  • Hallo,


    verstehe ich dich richtig, dass das Programm alle 5 Minuten aufgerufen wird oder wird es einmal aufgerufen und misst dann alle 5 Minuten?

    Wenn ersteres, dann könntest du dein Programm in zweiteres umschreiben. Wenn das schon so ist, dann zeige uns bitte dein ganzes Programm.


    Grüße

    Dennis

    ... ob's hinterm Horizont wirklich so weit runter geht oder ob die Welt vielleicht doch gar keine Scheibe ist?

  • verstehe ich dich richtig, dass das Programm alle 5 Minuten aufgerufen wird oder wird es einmal aufgerufen und misst dann alle 5 Minuten?

    Hi,

    das Programm wird alle 5 Minuten aufgerufen.

    Wenn ersteres, dann könntest du dein Programm in zweiteres umschreiben.

    Wie geht das ? Wie kann ich - sinnvoll - eine Timer-Funktion realisieren, die dann alle 5 min misst ?
    Die Ansteuerung der LED wäre damit wohl auch kein Thema mehr, da das Programm ja dann auch nicht mehr verlassen wird.


    Gibt es - davon ab - Routinen, die einen Ausgang dauerhaft ein- oder ausschalten können (d.h. auch nach Verlassen des Programms) ?