RetroPie forum home
    • Recent
    • Tags
    • Popular
    • Home
    • Docs
    • Register
    • Login
    Please do not post a support request without first reading and following the advice in https://retropie.org.uk/forum/topic/3/read-this-first

    {SOLVED} How to make a momentary push button that exit games and take me back to game menu ?

    Scheduled Pinned Locked Moved Help and Support
    push buttonretropiepsxscriptnewbie
    56 Posts 3 Posters 7.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      O.M.A.A @mitu
      last edited by

      @mitu I put the 2 wires back to the same position and I edited the file from 3 to 33, but didn't work

      cyperghostC O 2 Replies Last reply Reply Quote 0
      • cyperghostC
        cyperghost @O.M.A.A
        last edited by

        @O-M-A-A Please remeber to do a restart after every change!

        O 1 Reply Last reply Reply Quote 0
        • O
          O.M.A.A @O.M.A.A
          last edited by

          @mitu

          Yeah, I do that with every change

          cyperghostC 1 Reply Last reply Reply Quote 0
          • mituM
            mitu Global Moderator
            last edited by

            I'll try to pull up my Pi to see how the reset button wires are wired on mine, it uses GPIO3, but I'm not sure where the other PIN is connected so that it generates the push event. It might take a while, though, I don't have it at hand right now.

            1 Reply Last reply Reply Quote 0
            • cyperghostC
              cyperghost @O.M.A.A
              last edited by cyperghost

              @O-M-A-A
              As I counted PIN connection on your picture it is likely your wiring is tied to PIN26 instead of 33?

              1 Reply Last reply Reply Quote 0
              • O
                O.M.A.A @cyperghost
                last edited by

                @cyperghost I'm sure it is here :
                1213134.png

                @mitu thank you, I rly appreciate what u guys r doing.

                cyperghostC O mituM 3 Replies Last reply Reply Quote 0
                • cyperghostC
                  cyperghost @O.M.A.A
                  last edited by cyperghost

                  @O-M-A-A And if you look to the python code, what do you see? There is PIN33 used for input. Which is obviously not used in your setup? Please change the GPIOinit and buttonState2 to 26

                  Please use the script that @mitu posted!
                  Because he also used the BCM Pin layout as setting which makes things a lot easier to hook up.

                  1 Reply Last reply Reply Quote 0
                  • O
                    O.M.A.A @O.M.A.A
                    last edited by

                    @mitu @cyperghost
                    I'm not concerned much on the power button, as I'm planning to install a micro usb click button like this one:

                    61jgjiVkgtL.SL1500.jpg

                    So I can remove the push button pins on gpio 3 and install the exit emu button instead.

                    1 Reply Last reply Reply Quote 0
                    • mituM
                      mitu Global Moderator @O.M.A.A
                      last edited by mitu

                      @O-M-A-A The numbering can be done in 2 ways

                      • pin number (1 - 40) - the inner numbers in your picture.
                      • so called Board/BCM (?) numbers - the outer labels in your picture.

                      If you look at how your wiring picture looks like, you see that the power wires are using pins 5 and 6, not GPIO5 and GPIO6. The numbers in your script are the PIN numbers, not the GPIO (outer) labels.

                      cyperghostC O 2 Replies Last reply Reply Quote 0
                      • cyperghostC
                        cyperghost @mitu
                        last edited by cyperghost

                        @mitu You surly already know this website ;) https://pinout.xyz/#
                        Maybe this will help @O-M-A-A, too

                        @O-M-A-A

                        Can use it in GPIO 3 instead of the power button ? and remove the power button wires as I don't need it.

                        The GPIO is a bit special one. It let's the Raspberry recover/restart from deep sleep mode. So it's very common in use for power off/power on events.
                        Do use this switch cable to full cut power from the Pie - after Powerdown. But never cut power by force

                        1 Reply Last reply Reply Quote 0
                        • O
                          O.M.A.A @mitu
                          last edited by

                          @mitu @cyperghost
                          the exit emu button is on pins 25 and 26 which GPIO 7 I was using

                          Can use it in GPIO 3 instead of the power button ? and remove the power button wires as I don't need it.

                          mituM 1 Reply Last reply Reply Quote 0
                          • mituM
                            mitu Global Moderator @O.M.A.A
                            last edited by

                            @O-M-A-A said in How to make a momentary push button that exit games and take me back to game menu ?:

                            Can use it in GPIO 3 instead of the power button ? and remove the power button wires as I don't need it.

                            You do need it, because that switch that you want to buy will not shut down properly your PI (i.e. will not run the shutdown command), it will merely cut down the power.

                            O 1 Reply Last reply Reply Quote 0
                            • O
                              O.M.A.A @mitu
                              last edited by

                              @mitu I see, so what to do now

                              cyperghostC 1 Reply Last reply Reply Quote 0
                              • cyperghostC
                                cyperghost @O.M.A.A
                                last edited by cyperghost

                                @O-M-A-A Hope I tranlated correct

                                "bite together and pull through the cheeks"

                                You are close to finish this!

                                1 Reply Last reply Reply Quote 0
                                • O
                                  O.M.A.A
                                  last edited by O.M.A.A

                                  @mitu @cyperghost yeah, thank you.

                                  it looks awesome, everything is working except the 1 button which is not a big deal, I will search for my problem. thanks guys a lot for your help and patience. I'm rly grateful for the time u spent it with a newbie ;D.

                                  O 1 Reply Last reply Reply Quote 0
                                  • O
                                    O.M.A.A @O.M.A.A
                                    last edited by

                                    @cyperghost @mitu
                                    I was thinking, I have tried the button with every pins, one of these pins executed the letter H on the keyboard, and I was able to make the button as hotkey.
                                    is it possible to make this key also perform the start button, so when pressed will function as a start and hotkey which will exit the emulator ;D.

                                    1 Reply Last reply Reply Quote 0
                                    • mituM
                                      mitu Global Moderator
                                      last edited by mitu

                                      I just tried on by PCB and the reset button is wired on PIN3, with the other one wired to a GND pin.

                                      Here's a little script you could run (python <script.py>) to check a PIN for a momentary press

                                      #!/usr/bin/python
                                      import RPi.GPIO as GPIO
                                      import time
                                      import subprocess
                                      
                                      pinNo = 3
                                      GPIO.setmode(GPIO.BOARD)
                                      GPIO.setup(pinNo, GPIO.IN)
                                      
                                      while True:
                                          #grab the current button state
                                          buttonState2 = GPIO.input(pinNo)
                                      
                                          if not buttonState2:
                                              # Reset emulator
                                              print "pressed " + str(pinNo)
                                      

                                      You can test various pins for button press by replacing changing pinNo to your desired Pin number.

                                      The original script I posted can probably be simplified as

                                      #!/usr/bin/python
                                      import RPi.GPIO as GPIO
                                      import time
                                      import subprocess
                                      
                                      GPIO.setmode(GPIO.BOARD)
                                      
                                      shutdownPin=5
                                      resetPin=3
                                      
                                      GPIO.setup(shutdownPin, GPIO.IN)
                                      GPIO.setup(resetPin, GPIO.IN)
                                      
                                      oldButtonState1 = True
                                      
                                      while True:
                                          #grab the current button state
                                          buttonState1 = GPIO.input(shutdownPin)
                                          buttonState2 = GPIO.input(resetPin)
                                      
                                          # check to see if button has been pushed
                                          if buttonState1 != oldButtonState1 and buttonState1 == False:
                                              # shutdown
                                              subprocess.call("shutdown -h now", shell=True,
                                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                                              oldButtonState1 = buttonState1
                                          
                                          if not buttonState2:
                                              # Reset emulator
                                              print "Reset pressed"
                                              subprocess.call("/home/pi/scripts/multi_switch.sh --es-closeemu", shell=True,
                                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                                      
                                          time.sleep(.3)       
                                      
                                      O 1 Reply Last reply Reply Quote 1
                                      • O
                                        O.M.A.A @mitu
                                        last edited by

                                        @mitu dudeeee,
                                        it works ;DDD, thank you so much for ur efforts, I couldn't believe it xD
                                        ur amazing, I really appreciate it.
                                        Also, thanks to you @cyperghost u guys are awesome

                                        O 1 Reply Last reply Reply Quote 0
                                        • O
                                          O.M.A.A @O.M.A.A
                                          last edited by

                                          @mitu

                                          #!/usr/bin/python
                                          import RPi.GPIO as GPIO
                                          import time
                                          import subprocess
                                          
                                          GPIO.setmode(GPIO.BOARD)
                                          
                                          shutdownPin=5
                                          resetPin=3
                                          
                                          GPIO.setup(shutdownPin, GPIO.IN)
                                          GPIO.setup(resetPin, GPIO.IN)
                                          
                                          oldButtonState1 = True
                                          
                                          while True:
                                              #grab the current button state
                                              buttonState1 = GPIO.input(shutdownPin)
                                              buttonState2 = GPIO.input(resetPin)
                                          
                                              # check to see if button has been pushed
                                              if buttonState1 != oldButtonState1 and buttonState1 == False:
                                                  # shutdown
                                                  subprocess.call("shutdown -h now", shell=True,
                                                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                                                  oldButtonState1 = buttonState1
                                              
                                              if not buttonState2:
                                                  # Reset emulator
                                                  print "Reset pressed"
                                                  subprocess.call("/home/pi/scripts/multi_switch.sh --es-closeemu", shell=True,
                                                    stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                                          

                                          this script made it work, like magic

                                          Thanks a lot

                                          1 Reply Last reply Reply Quote 0
                                          • mituM
                                            mitu Global Moderator
                                            last edited by

                                            Glad you got it working.
                                            One minor correction - add back the sleep timer at the end, otherwise the script will consume more resources than needed. I've edited my previous post with the timer line. Make sure you copy the script again and preserve the indentation.

                                            O 1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

                                            Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.