if sperren und erst nach durchlauf wieder frei geben!

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!
  • Ja, du übergibst auch kein 'motor' an 'MotorControl'


    Aber der 'motor' muss 'start' und 'stop' Methoden haben, sonst passiert hier auch nichts.

    Wenn dann musst du dich an den Code aus #16 halten, der hat wenigstens deine Hardware drin, das was du gepostet hast war nur ein Konzept.

    Und, du musst den Code einbauen, der dir sagt wann der Motor auf seiner Endposition ist, sonst ist das ganze Konzept sinnlos und du kannst ihn einfach in definierten Abständen ansteuern.


    Ich habe schon mal gefragt, wie stellst du sicher, dass der Motor seine Position erreicht?


    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧

  • Aus deinem Script in #20 hast du eine Klasse Motorcontrol die als Eigenschaft motor erwartet. Die Klasse bekommt aber kein motor.


    Vergleich dein Script aus #20 und aus #16.

    Dann fällt dir sicher was auf.

  • Wenn ich dieses Skript ausführe, bekomme ich ja durchgehen den print servo ausgegeben. aber wie mache ich das es nur einmal ausgegeben wird trotz schleife :-/

  • Ich dachte man setzt eine variable am Anfang und die ander am ende wenn die servo durchgelaufen sind^^ :denker:

    Das ist ja auch richtig, aber woher weist du bzw. das Programm wann die Servos durchgelaufen sind? Das Programm ist gerade blind und sieht nicht, wann der Motor fertig ist. Irgendwie muss das mitgeteilt werden. Braucht der Motor vielleicht immer gleich lange für eine Umdrehung, dann kann man das auch über die Zeit regeln, falls das zu deiner Anwendung passt.



    Wenn ich dieses Skript ausführe, bekomme ich ja durchgehen den print servo ausgegeben. aber wie mache ich das es nur einmal ausgegeben wird trotz schleife :-/

    Das ist doch an der falschen Stelle, dann muss das da rein wo auch der Motor gestartet wird.



    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧

  • okay, ja das macht Sinn.

    Also muss ich das jetzt in meinen #3 super Code irgendwie einbauen :denker: ab zeile 150 sollen die servos ja nacheinander ihre Arbeit machen und die benötigen ja auch immer die selbe zeit. Also dann könnte man das auch zeit gesteuert machen wenn das einfacher wäre.

    lg

  • Hallo,


    du darfst keine Motorbefehle annehmen solange deine festgelegte Zeit nicht abgelaufen ist.

    Anstatt du 'ready' abfrägst, fragst du die Zeit ab, die von Motorstart an vergangen ist.


    Dazu kannst du die 'time.monotonic' verwenden.


    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧

  • Wie hast du ihn den eingebaut?

    Einfach kopieren geht leider nicht, dann wärs kopieren und nicht programmieren.


    Ich kann mich nur wiederholen, vergess doch bitte deinen Code aus #3 und baue das Projekt Stück für Stück auf.


    Für mich fehlt hier der rote Faden. Was passiert wenn du den Code aus #25 alleinstehend laufen lässt?

    Er sollte von den Aufrufen in der Schleife nur den ersten abarbeiten und die anderen sollten nicht "bis zum Motor durchkommen".

    Funktioniert das?

    Wie stellst du dir das mit der Zeit vor? Je nach Umdrehungswinkel des Motors muss braucht der Motor ja unterschiedlich lang.

    Für was ist denn das ganze im Detail?

    Willst du hier mit der Hilfe programmieren lernen oder einen fertigen Code? Bis jetzt habe ich so geantwortet, dass du mit Hinweisen die Lösung selbst erarbeiten kannst. Wenn du das zweite willst, musst du so ausführlich wie möglich jedes Detail beschreiben und hoffen, das gerade jemand Langeweile hat :)


    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧

  • Nicht nur kopiert^^

    Das Program läuft auch wieder, allerdingst bekomme ich das nicht hin das die servos da anspringen, habe es mit globale variable versucht. weil irgendwie muss der ja das signal bekommen von einer anderen def funktion. # 25 Funtioniert wunderbar :)

    Mit der zeit dachte ich, wenn die servos zbs. 20sec. zum durchlaufen benötigen wird in der zeit der eingang gesperrt.

    Ich denke das sollte bei servo kein Problem sein die sind da ja zeitlich immer gleich^^

    Bin so schon sehr überrascht für die ganze hilfe, bin wohl zu ungedultig. Aber ich bin auch viel am lernen^^ :danke_ATDE:

  • # 25 Funtioniert wunderbar :)

    Komisch, ich hätte einen 'NameError' erwartet.


    Okay, jetzt wird nach dem ersten Motoraufruf 20 Sekunden lang nichts entgegen genommen. Also alle Aufrufe in der Schleife, bis auf den letzten Sollten ignoriert werden.

    Ist das Prinzip klar?

    Verwende nie(!!!!!) globale Variablen.

    Arbeite bitte das Tutorial durch, sonst kommen wir zu keine Ziel:

    https://docs.python.org/3/tutorial/


    Beantworte bitte alle Fragen.


    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧