Funktionen durch einen Button stoppen

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo ,


    ich hänge seit einigen Tagen an einem Problem und komme einfach nicht weiter, ich baue eine Ampelschaltung mit Hilfe von LEDS einem Buzzer und einem Button. Eigentlich funktionieren die Komponenten sehr gut miteinander.


    jedoch will ich das in meiner def main, mehrere funktionen nacheinander ausgeführt werden und falls der button gedrückt wird soll die funktion stoppen und in die funktion des buttons übergehen, ich habe es mit if else anweisungen versucht, jedoch vergebens.


    Weis jemand eventuell die Lösung es ist echt dringend :D

    Mfg

  • Hi Hofei,


    ich arbeite in der programmiersprache python, jedoch möchte ich denn quellcode nicht hochladen, da es sich um ein semester projekt handelt.


    jedoch kann ich bisschen was aus meinem quellcode zitieren


    ich habe einige funktionen ausserhalb der main, wo ich gpio ausgänge belege und leds ein und ausschalte, mithife von time.sleep etc.


    in meiner def main ():

    stehen mehrere funktionen untereinander

    wie beispielsweise:


    start()

    ampelschaltet()

    time.sleep


    while True:

    input_state=GPIO.input(16) -> 16 ist gpio button

    if input_state == False:

    print("Fussgaenger bedient knopf") #knopf wird gedrueckt


    ich hoffe das hilft bisschen weiter :D

    mfg

  • ich hoffe das hilft bisschen weiter :D

    nein


    Code bitte in Codeblock posten, wie das geht..siehe in Punkt 4

    Wie Frage ich nach Hilfe?


    Je weniger du von deinem Code zeigst, desto schlechter kann dir natürlich geholfen werden. Wenn du den Orginalcode nicht herzeigen möchtest ist das natürlich deine Entscheidung - würde dich aber dann bitten einen entsprechenden Dummycode zu schreiben.


    edoch will ich das in meiner def main, mehrere funktionen nacheinander ausgeführt werden und falls der button gedrückt wird soll die funktion stoppen und in die funktion des buttons übergehen, ich habe es mit if else anweisungen versucht, jedoch vergebens.

    Anhand diesen Satzes befürchte ich nur, dass du wohl dein Programm falsch designst

  • das ist mir schon bewusst, das ist auch nur der standart code ich will, das der quasi wenn der button gedrückt wird, die aktuelle funktion noch ausgeführt wird, und danach in die funktion des buttons hineingeht quasi.


    Das bekomm ich nicht hin ich habs mit anderen funktionen versucht die ich definiert hab, mit if else abfragen, aber es klappt nicht :(

  • Hallo,


    grundsätzlich wird das Skript Befehl für Befehl abgearbeitet. Wenn du zwei Sachen "parallel" machen willst (also den Button abfragen und die LED schalten), dann musst du dich entweder mit nebenläufiger Programmierung beschäftigen und deine Funktionen so kurz (bezogen auf die Ausführungszeit) machen, dass in einer Hauptschleife der Button immer wieder abfragt werden kann. Man könnte das z.B. so machen, dass die LED zeitabhängig geschaltet wird, wodurch im Code schon mal alle `time.sleep()` wegfallen.


    Einfacher wird es definitiv, wenn du statt des alten / veralteten Rpi.GPIO Moduls das neuere / schönere / bessere gpiozero Modul nutzt.


    Was ist der Schwerpunkt der Semesterarbeit? Die Hardware (also die Schaltung) oder das Programm, dass die Schaltung steuert?


    Gruß, noisefloor

  • Danke an jeden der geholfen hat das Problem zu lösen:D


    ich hab eine einigermaßen brauchbare Lösung gefunden <3

  • brauchbare Lösung gefunden

    und hoffentlich auch verstanden um das ganze auch Anwenden zu können xD

    Es ist immer nett, wenn man zu einer Lösung kommt, diese auch präsentiert. So haben User welche das selbe Problem haben wie du, dann auch eine Lösung parat.


    Thread bitte als erledigt markieren