GPIO Taster während time.sleep(60)

  • Hallo Forum

    Ich habe ein BeautifoulSoup script was alle 60 sec. ausgeführt (while True: time.sleep(60) und bei Veränderung an ein 1602 i2c LCD Display ausgegeben wird.

    Das i2c Display hat einen fünften Pin für das Backlight welches ich über einen weiteren Taster einschalten (PWM fadeIn) oder ausschalten will.

    Jetzt habe ich das Problem das der interrupt während der time.sleep nicht abgefangen wird bzw. die Funktion welche das Display einfaden soll ausgeführt wird.

    Beim Arduino macht man das ja mit milliseconds (Beispiel: LED ohne delay). Wie löst man das am besten beim Raspberry Pi.

    Threating habe ich schon probiert allerdings geht dann der Load schnell auf über 2.

    LG opaque

  • Zur hilfreichsten Antwort springen
  • Threading ist schon der richtige Ansatz. Das es bei dir nicht geklappt hat, liegt also nicht am Konzept, sondern am uns unbekannten konkreten Code.

  • Ok danke.

    Ich bin einen Schritt weiter das LCD Script wird korrekt ausgeführt.

    Allerdings wird der "while True:" loop nicht ausgeführt.

    Vereinfacht dargestellt mein script:

    • Hilfreichste Antwort

    Wie ueblich der klassische Fehler bei der Angabe des target: du rufst du Funktion schon gleich auf. Statt einen callback anzugeben. So muss das aussehen:

    Code
    lcd = threading.Thread(target=LCD.fadeToggle)

    Und wenn du statt den Thread lcd zu nennen ihn besser benennst - zb fader_background_thread - dann kannst du dir auch die unguenstige Umbenennung des lcd-Moduls in LCD sparen. GROSSGESCHRIEBENE DINGE SIND IN PYTHON KONSTANTEN. klein_geschrieben Variablen. UndSowasIstEineKlasse.

  • Super danke das war es!

    Noch eine Frage: Ist es besser dann alles als threads laufen zu lassen?

    z.B.:

    Code
    carThread = threading.Thread(target=carLoop)
    lcdThread = threading.Thread(target=LCD.fadeToggle)
    carThread.start()
    lcdThread.start()
  • Nein. Alles was du damit erreichst ist, dass dein main-thread (den's eh immer gibt), einfach nix macht. Was unnoetig ist.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!