*gelöst* Python Script zur steuerung von Servos bei Start eines Games (Retropie) aufrufen

  • Hallo Gemeinde

    Finde per Google iwie nicht das, was ich möchte ^^

    Ich möchte beim starten eines MAME Games (Retropie) jeweils zuerst ein bestimmtes Python-Script aufrufen.

    Das Script steuert dann Servos an, welche die Restrictoren der Joysticks umstellen (4/8 Weg).

    Wo muss ich diesen Aufruf einfügen?

    Bsp:

    Aufruf PacMan > Ausführen "python servo_pos_4way.py" > weiter zum Boot von MAME mit PacMan

    Aufruf MortalKombat > Ausführen "python servo_pos_8way.py" > weiter zum Boot von MAME mit MortalKombat


    Das Gleiche beim Aufruf eines DOS Games:

    Aufruf NFSSE > Ausführen "python servo_pos_8way.py" > weiter zum Boot von Dosbox mit NFSSE


    Habe nach https://retropie.org.uk/docs/R…-runcommand-onend-scripts das User Menu gefunden.

    Das speichert aber meine Eingabe nicht. Es führt das gewählte Script genau nur 1 mal aus, dann wenn ich das "Launch Menu" aufrufe.

    Beim nächsten Spielstart ist das wieder vergessen.


    Ich habe nun geschafft, mit dem runcommand-onstart.sh mal ein Testscript aufzurufen.

    Das Testscript wird bei jedem Spiel aufgerufen.

    Das endgültige Script muss aber dann unterscheiden können, ob es sich um ein 4 oder 8 Wege Game handelt.

    Wie übergebe ich das aber nun ans Script weiter? Iwo muss ich das Spiel ja mit typ4 oder typ8 markieren........


    Danke im Voraus.


    Edit:

    Habe mir eine Lösung zusammen gepflastert.

    Habe in /opt/retropie/configs/all/runcommand-onstart.sh

    Code
    bash "/home/pi/4or8way.sh" "$@"


    eingetragen und folgendes Script in /home/pi/4or8way.sh gespeichert:



    Die Namen der 4-Wege Games habe ich in der Datei /home/pi/4way.games gespeichert (wie eine Datenbank).

    Immer 1 Name pro Zeile. Der Game-Name wird beim Aufruf von diesem in /home/pi/game.name.txt gespeichert (am Schluss mit Endung .zip)

    Bei mir sieht die 4way.games Datei so aus:



    Alle Games, welche nicht in der Datei 4way.games stehen, werden mit 8-Wege Joystick ausgeführt.


    Am Schluss werde ich natürlich


    Code
    echo "8-Wege Joystick"  > /home/pi/test.txt"
    
    echo "4-Wege Joystick"  > /home/pi/test.txt

    durch die Servoansteuerungs Python-Scripts ersetzen ( https://tutorials-raspberrypi.…pi-servo-motor-steuerung/ )

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

    9 Mal editiert, zuletzt von treki ()

  • treki

    Hat den Titel des Themas von „Python Script bei Start eines MAME Games (Retropie) aufrufen“ zu „*gelöst* Python Script bei Start eines MAME Games (Retropie) aufrufen“ geändert.
  • treki

    Hat den Titel des Themas von „*gelöst* Python Script bei Start eines MAME Games (Retropie) aufrufen“ zu „*gelöst* Python Script zur steuerung von Servos bei Start eines Games (Retropie) aufrufen“ geändert.
  • Zwar eine Weile her, aber ich möchte euch die finale Lösung nicht vorenthalten.


    4or8way.sh



    Im Anhang die einzelnen Scripts.


    Die LED Ansteuerung (Option - nicht notwendig) habe ich so kompliziert gemacht, weil die LED Anzeige mit dem 74HCT42 bereits vorhanden war.
    Man kann sonst natürlich die 2 LEDs direkt mit 2 GPIOs ansteuern.


    Mit dem kalib.py kann man die Servos kalibrieren. Mit + / - erhöht/verkleinert man die % des PWM Tastverhältnisses um 0.5-Schritte.

    Die Werte für 8-Weg bzw 4-Weg Positionen notieren und dann in den 4 Scripts 4wayP1.py .... 8wayP2.py eintragen.

    Bsp:

    pos = 6.0 # Position in %


    kalib.py


  • Anbei ein kurzes Video, wie das schlussendlich aussieht.


    Edit:

    Siehe letzten Post

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

    2 Mal editiert, zuletzt von treki ()

  • Nein. Ich lese nur mit und mir gefällt das technisch.

    Vacuum-Fachverkäufer


    Wissen ist der einzige Rohstoff, welcher sich durch Gebrauch vermehrt! :thumbup:


    Aus aktuellem Anlaß weise ich darauf hin, daß Reparaturtips nur unter Beachtung der Regeln im Umgang mit elektrischen Geräten befolgt werden sollten!
    Sollten dort Zweifel bestehen, bitte einen Fachmann zu Rate ziehen!

  • Ich wurde gefragt, wie man die Servos mit einem PC ansteuern kann, da dieser keine GPIOs hat.

    Hier meine Lösung mit einem Arduino Nano, der per USB am PC angeschlossen wird.


    Arduino Sketch (ino):


    Python Code zum senden des Winkels vom PC aus:



    Für den 2ten Servo könnte man zBsp Werte von 200 bis 380 senden und diese im Arduino per IF Statement abfragen.

    Wenn der übermittelte Winkel-Wert grösser als 199 ist, da 200 subtrahieren und an den anderen Servo-GPIO (PWM) senden.

  • Hier eine neue ino, welche 2 Servos ansteuern kann.

    Werte von 0 bis 180 steuern das Servo 1.

    Werte von 200 bis 380 steuern das Servo 2.

    Zudem wird nun das PWM Signal nach dem ausführen immer abgeschaltet. So kann man auch eine LED als Indikator am betreffenden PWM Pin anschliessen (ich habe eine rote LED mittels 220 Ohm Widerstand angeschlossen).

    Das verhindert auch ein allfälliges Zucken des Servos.


    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

  • Die Videos sind leider zu gross. Und ZIP in Parts geht nicht :(

    7z und RAR ist leider nicht erlaubt :(

    Habe die mal gerendert :)

  • Jetzt kann man sich was drunter vorstellen!

    Genau richtig für den guten alten Quadro etc !

    Vacuum-Fachverkäufer


    Wissen ist der einzige Rohstoff, welcher sich durch Gebrauch vermehrt! :thumbup:


    Aus aktuellem Anlaß weise ich darauf hin, daß Reparaturtips nur unter Beachtung der Regeln im Umgang mit elektrischen Geräten befolgt werden sollten!
    Sollten dort Zweifel bestehen, bitte einen Fachmann zu Rate ziehen!

  • Quadro?


    Iwie bekomme ich keine Benachrichtigungen von hier :(

    1000x besser als eine elektronische Lösung.

    Der Restriktor ist halt immer noch kompromisslos ^^

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

    Einmal editiert, zuletzt von treki ()

  • Der Quadro ist ein deutsches Gerät aus den 80igern (?) mit vier JAMMA Slots für vier PCBs.

    Umschalter und vier getrennte Netzteile sorgen für augenblickliche Spielumschaltung.

    Das Besondere ist die automatische Bildschirmdrehung....dafür wäre Deine Lösung super.

    Wurde dann später von Konami nachgebaut, in Lizenz. Aber das deutsche Gerät war qualitativ überlegen.

    Vacuum-Fachverkäufer


    Wissen ist der einzige Rohstoff, welcher sich durch Gebrauch vermehrt! :thumbup:


    Aus aktuellem Anlaß weise ich darauf hin, daß Reparaturtips nur unter Beachtung der Regeln im Umgang mit elektrischen Geräten befolgt werden sollten!
    Sollten dort Zweifel bestehen, bitte einen Fachmann zu Rate ziehen!

  • Meine Lösung ist getestet und in Betrieb!

    Wenn wer die Plexiglas-Teile will, kann ich die gerne fräsen.

    Habe ja nun den G-Code dafür ^^

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

  • Der Quadro ist ein deutsches Gerät aus den 80igern (?) mit vier JAMMA Slots für vier PCBs.

    Umschalter und vier getrennte Netzteile sorgen für augenblickliche Spielumschaltung.

    Das Besondere ist die automatische Bildschirmdrehung....dafür wäre Deine Lösung super.

    Wurde dann später von Konami nachgebaut, in Lizenz. Aber das deutsche Gerät war qualitativ überlegen.

    "Umschalter und vier getrennte Netzteile sorgen für augenblickliche Spielumschaltung." um Gottes Willen.

    4 Netzteile????

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

  • Ok. Hab gerade die Benachrichtigungs-Mail bekommen.

    Gefühlte 2h später.

    Ich kenne das. Bin Tech-Admin in einem Board.

    Habe dort einen Relay-Service eingebaut.

    "Ich weiß nicht, mit welchen Waffen wir im 3. Weltkrieg kämpfen werden, aber im 4. werden wir uns wieder mit Keulen prügeln."

    (Albert Einstein)

    Einmal editiert, zuletzt von treki ()