Announcement

Collapse
No announcement yet.

Home made remote for simulator.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Home made remote for simulator.

    I've gotten a lot of help from here so figured i'd share back. Not sure if this was the place to post but I'm planning to make a pocket remote for controller my simulator. First step was to make a box with buttons and try it. Waiting for my office to be build and starting toying around. Just need to change the buttons for any system.


    Wood box which is 30cm by 30cm. The button holes are 29mm and the joystick was 35mm. All of these parts cant be bought on many websites. Just search arcade parts. The other item was a Leonardo Arduino compatibile board because it has a UART chip / HID that can do USB to the PC.
    So, in summary
    7 HAPP style buttoms
    1 Joystick - I cut the head off and mount a golf ball on it for effect
    1 - Ground cable that connects all of the switches (on the joystick too)
    11 - Single headed cables to connect to the Leoardo
    1 - Leonardo . Prices as low as $10 - https://www.arduino.cc/en/Main/ArduinoBoardLeonardo

    So all in money output was about $17. Time to make the box was 2 hours because i'm not proficient in that. Coding time for the board was about 30 minutes.

    Figured I'd share with everyone else here.

    Attached is pictures
    Here is the video - https://youtu.be/v7F9R-KMOTQ
    Attached is the Arduino code - as zip file, rename to INO as Arduino code- Also below just in case



    Code:
    #include <Keyboard.h>
    // char ctrlKey = KEY_LEFT_CTRL;
    char ctrlKey = KEY_LEFT_GUI;
    bool pressed = false;
    
    void setup() {
    // V0 T.S - Intial Sketch Idea
    // V0.1 T.S.  -- Pulled in Decimal Values from here http://www.asciitable.com/
    // V0.2 - Change the pinmode and buttonState to arrays after troubleshooting.
    // V0.3 - Wiring Test
    // V0.4 - Button Programming - Reference for Control+Key - https://www.arduino.cc/en/Reference/KeyboardPress
    // V0.5 - Fixed some repeat characters due to timing - delay of 250 is the lowest without guaranteed repeats
    
    Keyboard.begin();
    
    //Joystick and button connections
    pinMode(1, INPUT_PULLUP); //Button 1
    pinMode(2, INPUT_PULLUP); //Button 2
    pinMode(3, INPUT_PULLUP); //Button 3
    pinMode(4, INPUT_PULLUP); //Button 4
    pinMode(5, INPUT_PULLUP); //Button 5
    pinMode(6, INPUT_PULLUP); //Button 6
    pinMode(7, INPUT_PULLUP); //Button 7
    pinMode(8, INPUT_PULLUP); //Button 8
    pinMode(9, INPUT_PULLUP); //Button 9
    pinMode(10, INPUT_PULLUP); //Button 10
    pinMode(11, INPUT_PULLUP); //Button 11
    pinMode(12, INPUT_PULLUP); //Button 12
    pinMode(13, INPUT_PULLUP); //Button 13
    
    }
     
    void loop() {
     
    // Check the switches:
    int buttonState1 = digitalRead(1);
    int buttonState2 = digitalRead(2);
    int buttonState3 = digitalRead(3);
    int buttonState4 = digitalRead(4);
    int buttonState5 = digitalRead(5);
    int buttonState6 = digitalRead(6);
    int buttonState7 = digitalRead(7);
    int buttonState8 = digitalRead(8);
    int buttonState9 = digitalRead(9);
    int buttonState10 = digitalRead(10);
    int buttonState11 = digitalRead(11);
    int buttonState12 = digitalRead(12);
    int buttonState13 = digitalRead(13);
    
    //
    // we'll only act on a button press if button is low and pressed is false
    //
    
     
    // Button 1, Bottom Right Dark Blue Stripe = Pressed
    if (!pressed && buttonState1 == LOW) {
    pressed = true;
    Keyboard.press(128);
    delay(100);
    Keyboard.press(217);
      delay(100);
      Keyboard.releaseAll();
      delay(250);
    }
    else{
      pressed = false;
    Keyboard.releaseAll();
    }
     
    // Button 2, Bottom Right Grey Stripe = Pressed
    if (!pressed && buttonState2 == LOW) {
    pressed = true;
    Keyboard.press(128);
    delay(100);
    Keyboard.press(218);
      delay(100);
      Keyboard.releaseAll();
    }
    else{
      pressed = false;
    Keyboard.releaseAll();
    }
    
    // Button 3  White = Pressed
    if (!pressed && buttonState3 == LOW) {
      pressed = true;
    Keyboard.press(77);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(77);
    }
    
    // Button 4 Light Brown Stripe = Pressed
    if (!pressed && buttonState4 == LOW) {
        pressed = true;
    Keyboard.press(202);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(202);
    }
    
    // Button 5 Black Stripe = Pressed
    if (!pressed && buttonState5 == LOW) {
        pressed = true;
    Keyboard.press(177);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(177);
    }
    
    // Button 6 - Bottom Left - Magenta = Pressed
    if (!pressed && buttonState6 == LOW) {
        pressed = true;
    Keyboard.press(70);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(70);
    }
    
    // Button 7 - Bottom Left - Red  = Pressed
    if (!pressed && buttonState7 == LOW) {
        pressed = true;
    Keyboard.press(82);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(82);
    }
    
    // Button 8 - White Joystick Left = Pressed
    if (!pressed && buttonState8 == LOW) {
        pressed = true;
    Keyboard.press(216);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(216);
    }
    
    // Button 9 - Joystick Right = Pressed
    if (!pressed && buttonState9 == LOW) {
        pressed = true;
    Keyboard.press(215);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(215);
    }
    
    // Button 10 - Joystick Up = Pressed
    if (!pressed && buttonState10 == LOW) {
        pressed = true;
    Keyboard.press(218);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(218);
    }
    
    
    // Button 11 - Joystick Down = Pressed
    if (!pressed && buttonState11 == LOW) {
        pressed = true;
    Keyboard.press(217);
    delay(250);
    }
    else{
        pressed = false;
    Keyboard.release(217);
    }
    
    // End of Sketch here
    }

  • #2
    That's awesome! I have an old arcade cabinet that I used for a Mame arcade game years ago. A mouse managed to get in my garage and chew through some wires and I never got it going again. I might need to use those parts for this!

    Comment


    • #3
      After wiring, just plug it into the USB and you are done. If you want to modify the code or do anything else with it (new key combinations, etc) then just change the ascii code that corresponds to the button (ascii table in the code)

      Note: I'm not selling these but i'm willing to help anyone that wants to make their own.

      Comment


      • #4
        Originally posted by geneazevedo View Post
        That's awesome! I have an old arcade cabinet that I used for a Mame arcade game years ago. A mouse managed to get in my garage and chew through some wires and I never got it going again. I might need to use those parts for this!
        Ohh, the awesome is in the game cabinet behind

        Yes, it's running Mame and 25 other emulators. Golden Tee is a popular choice The Leonaro would work perfectly for a mame cabinet although it may have some shortcomings when it comes to Playstation, Nintendo type games.

        Many tutorials on using Leonardo's for MAME. Let me know how you go or if I can help

        Comment


        • #5
          It's been about 15 years since I did my mame cabinet. I've always wanted to redo it, and I even picked up a nicer cabinet along the way. The problem is that I have more "great ideas" than I have time and $!

          Comment

          Working...
          X