Raspberry Pico mit MIcroPython, Dfplayer, TSOP 4838 und Servomotor Problem

  • Hallo zusammen,

    Ich habe hier einen Raspberry Pico mit MicroPython v.1.21.0 auf einem Breadboard mit einer LED, TSOP 4838 (Infrarot) mit Fernbedienung und einem Servomotor (ählich sg90) zusammen gefrickelt.

    Via Fernbedienung z.B. Taste 1 wird eine Mp3 abgespielt und nach einer sleep Zeit bewegt sich der Servomotor. Läuft alles prima.

    Nun folgendes Problem, während der sleep Zeit von 26 Sekunden kann ich mit der Fernbedienung nichts Anderes wählen. Ist mir schon klar, dass das Script durchläuft und nix zulässt.

    Ich hoffe das war soweit verständlich…

    Hat jemand eine Idee wie ich das lösen könnte?

    Lg gogo

  • Raspberry Pico mit MIcroPython, Dfplayer, TSOP 4838 und Servomotor Problem? Schau mal ob du hier fündig wirst!

  • Hallo,

    ich finde das nicht verständlich. Dir ist klar, dass während der Zeit in der das Programm schläft, nichts weiters passiert. Was ist denn dann die eigentliche Frage?

    Wenn du für eine gewisse Zeit nur bestimmte Sachen nicht machen willst, dann ist 'sleep' falsch. Du musst die Zeit messen und solange sie nicht deinen gewünschten Wert erreicht hat, lässt du eine weitere Abarbeitung nicht zu bzw. startest du eine weitere Funktion erst, wenn der gewünschte Wert erreicht wurde.


    Grüße

    Dennis

    🎧 We are living in a world that's full of fakes,
         we are living in a world that's full of rumors,
         we are living in a world that's full of evil,
         we are living in a world that's full of hate 🎧

  • Hallo Dennis,

    schonmal vielen Dank dafür.

    Also könnte ich das mit einer If Anweisung lösen, aber habe ich dann nicht das gleiche Problem?

    Die eingentliche Frage ist: Wie kann ich es schreiben das die Fernbedienung funktioniert auch wenn der Motor läuft?

    Lg gogo

  • Moinsen

    in dem du deine Bewegungschoreographie in eine LIST packst,
    Dann einen Timer startest , der diese LIST als Step Punkt für Punkt abarbeitet, denn das Setzen des PWM Wertes ist nur ein einmalige Aktion.

    Wenn du dann deine Bewegungsablauf starten willst, muss du zu eine diese Class initiieren. Mit der Angabe des PWM / Servo Pins, und der Verzögerungszeit in ms.
    Mit dem Befehl <name>.run() wird dann der Ablauf gestartet. Aller dieser "waits" Milisekunden, wird der nächste Schritt ausgeführt, bis diese Liste abgearbeitet ist. Dann wird der Counter ge-resetet, und der Timer wieder abgestellt. Inzwischen läuft das Programm in __MAIN__ weiter.

    [ Programm nicht getestet ]

    Franky

  • Hallo Franky

    Danke dafür!

    So ich hab das mal ausprobiert und muss zugeben, ja ich hab keine Ahnung davon. :(

    Kannst du mir bitte weiterhelfen. Hier der Code:

    Die Datei heist test.py und in der main rufe ich sie mit "from test import Bewegung" auf.

    Der Motor bewegt sich sofort und es kommt leider kein Timer zu stande. Was mache ich falsch???

    Besten Dank.


    Lg gogo

    Edited once, last by gogo (December 11, 2023 at 10:58 PM).

  • Danke Franky das du mir geholfen hast.

    Hier der fertige Code von Franky.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!