Wire the Buttons

For the obstacle course, there is a start button at the begining and a stop button at the end of it. These are made from large, 100mm arcade buttons. 

There is also a button box for the judges table with a start, pause, stop, and reset button.

Since all of these are pretty far from the actual controller box, we'll use Cat 5 (or Cat 6) cable to wire them. Cat 5 cable (sometimes called Ethernet cable) is great for this type of application because it contains eight conductors, is rugged, inexpensive, and is readily available in many different lengths anywhere from 1' to 300'. 

You could create a wireless button box if necessary, but wired is simple and reliable. LoRa or RFM69 Packet Radio would be good wireless systems to consider if you MUST go wireless.

An elegant way to use Cat 5 cable in an Arduino project is with the Patch Shield. This allows you to easily jumper any Arduino pin to any wire within each of four RJ-45 jacks. It includes four daughter boards with RJ-45 jacks broken out to eight pins. 

Assemble the Patch Shield in the minimal configuration per these instructions.

You'll then use small jumper wires to patch Arduino pins to the corresponding conductor on the shield's RJ-45 jack as seen here.

Your configuration can vary -- this setup uses jack J1 for the course start button, J2 for the course stop button, and J3 for the judges' desk control box that has four buttons.

Here are the connections:

J1 conductor 1 to GND

J1 conductor 2 to Arduino pin 11

 

J2 conductor to GND

J2 conductor to Arduino pin 12

 

J3 conductor to GND

J3 conductor to Arduino pin A0 -- RESET

J3 conductor to Arduino pin A1 -- START

J3 conductor to Arduino pin A2 -- PAUSE

J3 conductor to Arduino pin A3 -- STOP

Note that I've used the connected double rows to piggyback the black ground wire to the three jacks.

Assemble the sattelite jacks, then connect two wires to each button using spade terminals, or simply solder the wires onto the common and normally open tabs on the button switch.

Repeat this method for the other 100mm button.

To build the judges' desk controller, measure out and mark centers for each button on a project box. This can be cardboard, wood, plastic, or even aluminum if you have the right tools to create the holes.

Thread the button shafts through each hole, and then secure them with the collars. I used three 60mm arcade buttons and one standard arcade button.

Thankfully, the bezels overlap and hide the holes, so they don't need to be perfect! I made mine with a cutoff disk and sanding drum on a rotary tool. 

You'll need to cut off the two pegs under the 60mm buttons to get a flush fit, or, if you're feeling fancy, measure an drill two receiving holes for them!

You may also want to cut a hole for the panel mount Ethernet extension cable. This makes it very neat to connect and disconnect your Cat 5 cable.

Now, you will need to wire up all of the buttons and Ethernet extension inside the box. You can run the ground wire from the RJ-45 satellite board to one of the 60mm button switch's common tab and then daisy chain that to the other two 60mm button switches. I used a quarter-size Perma Proto board to connect the RJ-45 satellite and wiring.

I also used the arcade button quick connect wire pair for the 30mm button and soldered a receiving jack to the proto board.

Then, connect the other wires to the N.O. tab on each switch using these connections:

J3 conductor to GND

J3 conductor to Arduino pin A0 -- RESET

J3 conductor to Arduino pin A1 -- START

J3 conductor to Arduino pin A2 -- PAUSE

J3 conductor to Arduino pin A3 -- STOP

You can solder a board header for the JST XPH cable, such as this one, or just strip the wires and solder directly to the board.

Plug the Ethernet extension cable into the RJ-45 jack and you're ready to close it up.

To make the course stop button stand, fit the ABS pipe into the pipe flange to act as a mount. Then, unscrew the collar nut from the red 100mm button, remove it's outer ring.

Trim the small keyed tab from the button, and then seat it into the pipe coupler. The fit should be tight, but you can glue it in place if you like.

Twist the switch into place on the button, and then run the cable through the pipe.

Finally, fit the pipe collar and button onto the pipe.

For the stand, cut a 3-1/2' long length of 3" ABS pipe.

About 4" up from the bottom, cut a square to match the Ethernet extension cable with a cutoff wheel on a rotary tool, and drill holes for the screws. 

Feed the wire with RJ-45 jack into the pipe from the top and press fit the button/collar on to it.

Plug the Ethernet extension into the RJ-45 jack, then fit the pipe bottom onto the pipe flange.

Now, you can plug a long length of Cat 5e or Cat 6 cable into the stop button pipe stand.

You can mount the flange to a floor of your obstacle course's warped wall, or mount it to a heavy base to keep it portable, yet stable.

Later, we'll add code to reset, start, pause, and stop the timer from the buttons alongside the code for lighting up the digits, but for now you can test out the button by uploading the Arduino example button.ino sketch, and making a couple of changes to the code.

First, change the buttonPin to 12 as seen below. Then, instead of using an external pull down resistor, you can us the internall pull up resistor on the Arduino by setting the pinMode for the buttonPin to INPUT_PULLUP, also seen in the code example below.

Download: file
const int buttonPin = 12;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is LOW:
  if (buttonState == LOW) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

Put the Patch Shield on top of your ScrewShield on the Arduino, and then upload the code.

When you press the gigantic, satisfying, shiny red button, the LED built onto the Arduino will light up!

This guide was first published on Mar 15, 2017. It was last updated on Mar 15, 2017. This page (Wire the Buttons) was last updated on May 24, 2019.