Button Board

At regionals we saw several teams using button boards. I can see the benefit to them, and would like to build one to play with. If you use one, can you help us with the following?

  1. What kits are you using?
  2. How difficult is it to program using java?
  3. Is there any special programming that has to be done to get the buttons working for the robot other than the standard button mapping?
  1. We used a PSoC 5LP from FIRST Choice and some buttons from Amazon. Then made the housing with 1/16" polycarb and wood pieces.
  2. As difficult as any off-the-shelf joystick
  3. No, you read it like any other joystick, each pin on the PSoC corresponds to a button or axis


Where did your get your buttons? Are you just using the small portion of the board or the entire thing? Would you have a picture of how the buttons are wired to the board?

My team used the Button Board Deluxe from AndyMark. For us, it was no more difficult to program than any other controller. There is no other special programming needed. I will get you a picture of our labeling when I get a chance but we found it very useful for this year with all the various heights needed for cargo and hatch panels. Using the button board we rotated it longways so we had two columns of four buttons for various heights. Then we were able to use some of the buttons on the side to help us with preparing our climb to level two or three.

Feel free to reply or message me with any questions!

1 Like

Not a true “button” board, but we at team Max ended up buying and using an Elgato Stream Deck this year. We built a background C# application that sets the button images and also feeder the data to vJoy. I highly recommend it as a fun small programming project and as a control system.

The major cons are:

  • You’re running a background app, so you should check before each match to confirm it’s actually running.

  • The buttons are really gummy, since they simply exist over a touch screen effectively.

  • The stream deck is much smaller than it appears to be online. The 15 buttons are very close.


You can use a spare Arduino for this if you’re willing to write some C. Sanwa makes nice buttons.


I’m not on pkrishna3082’s team, but we’ve also used the PSoC 5LP…

I wrote about the two options we have used – including links to vendor documentation on how to wire buttons and switches – here:

We’ve used:

Assuming you’re asking about whether we used the entire capacity of the controller, until this year, no. This year we used a number of rotary switches, and each switch position appears as a button, so we had to alter the program for the PSoC 5LP to turn some of the LED outputs into button inputs.


Our team has used these buttons from Andymark (https://www.andymark.com/products/button-board) inset into our polycarb driverstation this year with much success. The buttons come with connectors that slip onto the USB controller and the controller shows up as a joystick and only requires you to set the buttons (Similar to any other gamepad or joystick).

1 Like

We had a lot of teams walk past our pit and backpedal and ask us questions when they saw our button panel all lit up on our driver station.

I’ve procured the parts for our button panel the past few years. The main components the past few years have been from Amazon, but as others have mentioned, Digi-Key, Sparkfun are also reputable vendors to look at.

The EasyGet USB arcade controllers are very easy to use and we like them because the students need to have EVERYTHING LED, which this controller supports. The controller is able to power light up micro-switches and run a signal back to the controller with one connector. The connectors are solid on both ends and we haven’t had any issues with loose wiring (quite the opposite actually when you miswire something). If you want to connect the leads to other switches with larger blades, you may need to get spade connectors that you can crimp on the ends. We used a powered USB hub to prevent over-current issues on the laptop (and to save on repeated insertions to the laptop ports)

The controllers support connecting up to 12 buttons, plus 4 more if you get creative by re-purposing the analog X and Y axis inputs for the traditional stick controls. We used 2 controllers and maxed out both of them with push buttons, switches and momentary rocker switches

According to our programmers - not difficult at all. Because we use two joysticks for driving, when you plug in these USB controllers, they appear in Windows as two more joysticks. The programmers were able to easily map functions to each button press as they normally did for the driver joysticks. The Driver Station software recognizes them as Generic USB Joystick and it is easy to troubleshoot and diagnose button press issues.

Nope, see above. We actually wanted to add a few more smarts to the panel by adding an Arduino and some digital relays to control the +5V to the LEDs to control them to be either ON, OFF, or FLASHING. This would indicate to the operator when certain operations could be performed, but we had to scale back the idea to “get it working first, then make it better”.

Rest of the build is just polycarb on a frame that we re-use every year. Dimensions are roughly 1’ x 1’ which can make spacing difficult, but definitely plan ahead before you cut & drill.


We bought a joystick kit off Amazon for ours. Practically plug-and-play to set up, and programming was very easy as well. We did kill the USB port on ours, making the Operator switch to an Xbox controller during SAC. He ended up liking it more than the button board (cries) so we’ve shelved the button board for this year.
Was nice while it lasted though.

Most of the kits I am seeing have 10 buttons. How do you get more than that? I still want the driver to use an X-box controller or joystick depending on their preference, but I want the secondary person to use the box. This year we would have needed more than 10 buttons on the box.

You can use multiple of the button boards, just need multiple USB ports. That’s what we did - ended up using two of them and just plugged them into a hub - https://www.amazon.com/gp/product/B01H010L5U/ref=oh_aui_search_asin_title?ie=UTF8&psc=1

That makes sense. Our laptop only has 2 ports so we’d have to use a hub. Did you have any issues using a hub? Did it always map the box correctly when you plugged it in?

1 Like

We had a few early instances of ‘generic usb device’ being in the wrong slot on the driver station, but once we got them locked in we were good for the entire event. Our operator really liked the custom controls and we’ve actually been iterating them between events with our laser cutter, super easy to cut a new board out of acrylic.

3572 Button Box.

Neither of these are kits, but the TI Launchpad option supports up to 20 buttons, and the Cypress PSoC supports 22 buttons with the vendor-provided firmware. We altered the PSoC firmware to support 32 buttons this year, which is the maximum Windows and/or WPILib will support on a single “joystick” [reference].

Unfortunately I don’t have any great pictures of our operator control box in it’s finished state, but here’s some that are pretty close to finished.


We’re not using a kit per-se. The buttons are all SparkFun Arcade buttons which have a fantastic clicky feel and have proven to be dead simple to mount and incredibly robust. The Switches are toggle switches from Digikey along with a single covered toggle switch. We have a ton of standard 5mm red LEDs for feedback (with 100 Ω current limiting resistors).

All of this is controlled by an Arduino Due using the Arduino Joystick Library. I used a screw terminal prototyping shield for the Arduino to make it easier to re-use the buttons later. For maximum redundancy and protection against failures, each button and switch has it’s own independent ground and sense/power pin. That way a single wire coming loose will affect only a single element of the device. This made wiring a terrible pain, though.

The box is laser cut MDF with custom sharpie accents until such a time we manage to design and print a label sheet.

Super simple. The Arduino shows up as a standard joystick with the buttons you’ve specified. In our case we have a gamepad that has 22 buttons and no axes. As a safeguard, we added some code that ensures each toggle switch is reporting only one direction at a time and the code goes into a failure mode if this assertion fails.

Nope, if you can map a standard joystick, you can map a custom box.

If you would like our code for the box, feel free to PM me. It’s currently mixed in to our main robot source repo, which we will release after the season ends.

1 Like

What I mean by “small portion” is the part of the board that appears that it can separate from the rest vs the entire stick.

1 Like

Got it. No, the bigger portion of the board is the actual gamepad controller. The smaller portion is a programmer to allow you to change the firmware on the bigger part. You could break off the smaller part and just use the bigger part, as long as you either put the right firmware on the bigger part before you break them apart or build a way to temporarily reconnect the 5-pin headers on either side of the “break.”

Here’s the pinout:

If you also get the arcade sticks that come with the buttons, be aware they are basically on/off. There is no axis with them We didn’t learn this until after the fact and changed our plan for how we moved forward at the end of our build.