Introduction: Finger-Trainer Controller

Using a controller or a keyboard is usually not a natural position for your fingers. This controller serves as an alternative that makes a controller healthy to use by training your fingers, instead of weakening them. This version has 4 different inputs, which can all be mapped to whatever you like.

Supplies

Materials:

  • 1x Finger-trainer (https://shorturl.at/chsHP)
  • 1x Arduino Micro, Arduino Leonardo or Hoodloader 2 (modified Arduino Uno)
  • 1x Power cord with USB
  • 4x 2 Pin push button (https://shorturl.at/bnEY5)
  • 4x 5 Band resistors
  • 1x Soldering board
  • 6x Electrical wires
  • 1x Butcher twine
  • 4x Tension springs (about: 1.5 cm length, 0.5 cm diameter)
  • 3x Small bolts
  • 12x Nuts (for the bolts)
  • 1x Small piece of hard plastic (about: 8.0 x 4.5 x 0.1 cm)
  • 1x Velcro (2cm wide)
  • 1x Soldering wire
  • 1x Iron wire (thin)
  • 1x 3d printer filament
  • 1x Glue stick (for glue gun)
  • (Optional) 1x piece of cardboard


Tools:

  • 3D printer
  • Soldering iron
  • Glue gun
  • Nippers
  • Scissors
  • Drill

Step 1: Soldering the Board

For this step, the goal is to make four functioning switches on a soldering board. Attached is a diagram that I used to make the board.

This is a pretty basic setup for the switches. It is important that the board is not larger than 7 centimeters wide, and 4 centimeters high, so it will fit inside of the controller. Also, there must be a wire for the pins of the Arduino at the numbers on the diagram.

For this step, you will need:

  • 4x 2 Pin push buttons
  • 4x 5 Band resistors
  • 1x Soldering board
  • 6x Electrical wires
  • 1x Soldering wire
  • 1x Iron wire
  • Soldering iron
  • Nippers

I recommend to first test your pin push buttons on a breadboard, to make sure everything works properly. If the buttons give proper input, cut the soldering board to a size of 7 by 4 cm.

Solder the buttons first, make sure they are placed in a horizontal row, equally divided over the board. They must be about 0.4 cm above the bottom of the soldering board.

Then, solder the resistances above the buttons, making sure they are about 0.5 cm from the top of the soldering board.

Solder the wires for the power and the ground, make sure the power is higher than the diagram, because the wire will otherwise interfere with the mechanism that presses the button.

Solder the wires for the pins in between the resistance and switches. Again, make sure that the wires are high enough.

Connect everything with help from the iron wire as shown in the diagram.

Step 2: Printing the 3D Model

For the controller case, I used a 3D printed model. I figured this was the best option, since the measurements are quite exact. Therefore, Autodesk Fusion 360 is the perfect choice, since you can directly scale the models when creating them.

For this step you will need:

  • 3d printer

I have attached the 3D Model to this Instructable. It should be scaled properly. There is a part on the model that I haven't used in my final version. Which is in the top left. This happened because I didnt the design the part properly, which means that it doesnt work with this project.

At the bottom right is the main case of the controller. There is a gap at the front for the butcher twine, and a gap at the side for the power cord of the Arduino. It also has two extrusions on the side, which are meant to be used for the velcro. There is another extrusion for the front which is made for the lid, at the bottom left of the photo.

The second compartment is at the top-right, this fits directly in the first compartment, and is meant to hold the springs and strings.

Lastly, the lone pieces at the middle-left are to be placed on the butcher twine which press the butttons.

To print the model, use the file from this Drive: https://drive.google.com/file/d/1WWBWacYeRxtjOnL5qjM16kJSwYmQcBAI/view?usp=share_link

Step 3: Attaching the Board

The goal of this step is to mount the board onto a piece of plastic, so that it can be safely installed in the controller.

For this step you will need:

  • 1x Soldered board
  • 1x Small piece of hard plastic
  • 3x Small bolts
  • 12x Nuts

Allign the board and the plastic, and drill three holes that fit the bolts. Make sure these are made at the top of the soldered board. Then attach the soldered board to the plastic as shown in the attached diagram.

Make sure that the plastic and the board fit inside of the 3d-printed compartments, and the controller lid can still be closed.

Step 4: Creating the Mechanism

In this step, the mechanism that pulls the butcher twine and presses the button will be created.

For this step you will need:

  • 1x Mounted and soldered board
  • 4x Tension springs
  • 1x Butcher twine
  • 3d printed case
  • 1x Drill

First up is attaching the butcher twine to the springs. Simply knot a long piece of butcher twine (about 30 cm) to one end of the tension spring. Repeat this until all the tension springs have one piece of twine connected to them.

Attach the other ends of the tension springs to the hooks inside the secondary compartment of the 3d printed case as shown on the photo. Then place the 4 pieces with a tiny hole onto the butcher twine, also as shown in the photo.

Place the mounted and soldered board in the case to determine at which height the twine will go into the board.

Then take it out of the case and drill through these holes so that twine is able to go through the board, plastic and the case.

You should know have 4 pieces of butcher twine that are able to be pulled when the controller is closed.

Test if the mechanism works, the pieces attached to the twine should press the button if the twine is pulled hard enough. This will be difficult at first, but the mechanism will be adjusted later so that the button can be easily pressed.

Step 5: Adjusting and Finishing the Mechanism

In the previous step, the mechanism has been installed. Now the plastic pieces that push the button can be locked into place, and the length of butcher twine can be adjusted.

For this step you will need:

  • 1x The controller
  • 1x Finger trainer
  • 1x Glue stick
  • 1x Velcro
  • 1x Glue gun

First the loose pieces will be glued into place. For me, all the way back was fine, but if that makes it too hard to press the button by pulling the twine, you can also move it forward a bit. The most important part is that they are glued upright, so that the pieces do not get tangled.

Now you can close the controller and attach the velcro on the sides as shown in the picture.

For this part, it can be easier to find a helping hand. Attach the finger-trainer and the controller on the arm of the helping hand (or arm). Then tie the butcher twine on the finger trainer, making sure that the button can be pressed by using the finger-trainer. If you can hear a button click, then the mechanism works properly. Note: the thumb can't be used as it pulls the twine sideways instead of pulling it back.

After properly adjusting the twine on the four fingers, cut of the ends of the twine.

Step 6: Uploading the Code

For this project I didn't do enough research, and assumed the keyboard library in the Arduino IDE software could be used for every Arduino. However, this library can only be used by Arduino's with the right USB connection, which the Arduino Uno doesn't have. Therefore, I had to modify and reprogram it into the 'Hoodloader 2', which is a tool developed by 'NicoHood'.

https://github.com/NicoHood/HID

I recommend to buy an Arduino Micro or Leonardo, since it will save you a lot of trouble.


#include "HID-Project.h"
// only neccessary if you use the 'Hoodloader 2', otherwise use: #include "Keyboard.h"

const int pinLed = LED_BUILTIN;
const int pinButton1 = 1;
const int pinButton2 = 2;
const int pinButton3 = 3;
const int pinButton4 = 4;


void setup() {
  pinMode(pinLed, OUTPUT);
  pinMode(pinButton1, INPUT_PULLUP);
  pinMode(pinButton2, INPUT_PULLUP);
  pinMode(pinButton3, INPUT_PULLUP);
  pinMode(pinButton4, INPUT_PULLUP);


  Keyboard.begin();
}

void loop() {
  if (!digitalRead(pinButton1)) {
    digitalWrite(pinLed, HIGH);
    Keyboard.println("z");
  }


    if (!digitalRead(pinButton2)) {
    digitalWrite(pinLed, HIGH);
    Keyboard.println("x");
  }


    if (!digitalRead(pinButton3)) {
    digitalWrite(pinLed, HIGH);
    Keyboard.println("c");
  }


    if (!digitalRead(pinButton4)) {
    digitalWrite(pinLed, HIGH);
    Keyboard.println("v");
  }


    delay(300);
    digitalWrite(pinLed, LOW);
 
}


Simply upload the code to Arduino. Connect the ground to one of the 'GND' pins, connect the power wire to the '5V'. Make sure to connect the input wires to 1, 2, 3 and 4. Note: Keyboard.println() writes inputs an enter after every command. If this is in the way, use the Keyboard.PRESS() and Keyboard.RELEASE() commands.

For more information: https://www.arduino.cc/reference/en/libraries/keyboard/


Close the case and plug the Arduino into the laptop. After uploading the code, you can know the use the controller. Make sure to put it on tightly so it doesnt slip.

Step 7: Extra: Photos of Making Process

Photo 1: Testing switches

Photo 2: Soldering

Photo 3: Installing 'Hoodloader 2' on Arduino Uno

Photo 4: Finished!