Choosing A Board

From Rhythm Cons Wiki
Revision as of 19:16, 15 March 2022 by VXZK (talk | contribs) (Reorg and updated Pi Pico description.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Choosing a board is an important part of creating your controller! There are many options for the DIY enthusiast, so let's take a look.


If you're short on time and looking for the cheapest option, get an Arduino Leonardo, Arduino Micro, or a Sparkfun Pro Micro (or the equivalent clone board). These boards provide native USB support and have plenty of pins to build a wide variety of controllers.

If you do not want to deal with the DIY aspect of programming, see #Community Options. Note that these options are higher priced.

It is not recommended to use an Arduino Uno, Arduino Nano, or Arduino Mega. These boards do not have native USB support. While software USB an option, it is significantly slower and will result in latency.

In the most basic configuration, you will need one pin per button, one pin per LED, and two pins per encoder. This allows for the most straight forward method of wiring and the simplest to program.


This page assumes you are using Quadrature Encoders, such as generic Chinese Rotary Encoders, Copals, Bourns, or other two pin encoders. If you are using a potentiometer, such as the Sensatec ELV-24Y36A-K or other generic pot, these instructions will not apply. Those will need a single analog pin, which many boards support without issue.

Quadrature Encoders are most responsive when they are used on interrupt-capable pins. This page will assume you will wire the encoder to interrupt pins. It is possible to use other pins for encoders at the risk of latency. See specific controller pages for information on controllers using more than 2 encoders.

Arduino (ATmega32U4)


The Leonardo can support one of the following setups:

  • 10 Buttons and 10 LEDs
  • 9 Buttons, 9 LEDs, and 1 Encoder
  • 8 Buttons, 8 LEDs, and 2 Encoders

3 more pins are accessible using non-standard methods, and 1 additional pin is accessible by modifying the core files.


The Micro can support one of the following setups:

  • 11 Buttons and 11 LEDs
  • 10 Buttons, 10 LEDs, and 1 Encoder
  • 9 Buttons, 9 LEDs, and 2 Encoders

1 additional pin is available, and 1 additional pin is accessible by modifying the core files.

Pro Micro

The Pro Micro can support one of the following setups:

  • 9 Buttons and 9 LEDs
  • 8 Buttons, 8 LEDs, and 1 Encoder
  • 7 Buttons, 7 LEDs, and 2 Encoders

Raspberry Pi

Pi Pico

The Pi Pico has 26 GPIO pins with 3 of them being ADC capable and features a dual-core cortex M0+ at up to 133MHz. It is fairly inexpensive and can support C/C++ or MicroPython. Since it's release, several codebases have been developed, making this another good option. Can theoretically support:

  • 13 Buttons and 13 LEDs
  • 12 Buttons, 12 LEDs, and 1 Encoder
  • 11 Buttons, 11 LEDs, and 2 Encoders


The Teensy series of boards, designed by PJRC, is also popular but comes with some caveats. Please read this section carefully.

All Teensy boards feature a custom USB stack, which requires modification to support HID lights. If you are not comfortable with programming, please ensure that there is suitable project code before choosing a Teensy.

Teensy 2.0

The Teensy 2.0 features an Atmel 32u4 processor, which is identical to the Leonardo / Micro / Pro Micro.

One advantage is that there are more pins broken out for more features.

The USBemani project is compiled against the Teensy 2.0.

Teensy LC

The Teensy LC features a Cortex-M0+ ARM processor. This is the board of choice for OpeNITHM builds, as it features numerous capacitive touch inputs as well as fast ARGB (ws2812b) support.

For other controllers, it is likely overkill.

The Teensy LC also uses a custom USB stack which will require modification for HID lights.

Teensy 3.x

The Teensy 3.x series feature an ARM processor, which is a significant processing boost to the 32u4. In general, it is very much overkill for controllers.

Teensy 4.x

The Teensy 4.x series feature an even faster ARM processor, which is definitely overkill for controllers.

Community Options

There are two community-developed options available if you would like to avoid the hassle of soldering and programming.


The arcin is an open-source project designed as a drop-in replacement for DJ Dao / Gamo2 controllers. Features:

  • 11 Buttons / LEDs
  • 2 Quadrature Encoders or Analog Potentiometers
  • 2 Generic LED outputs
  • WS2812b support on Button 9 (cannot use Button 9 if enabled)
  • Headers for PS2 support

See the arcin page for more information.


The Roxy is a fork of the arcin designed as a drop-in replacement for Yuancon controllers. Features:

  • 12 Buttons / LEDs
  • 2 Quadrature Encoders or Analog Potentiometers
  • 1 Generic LED output
  • Built-in driver for up to 4 RGB common-anode LEDs
  • WS2812b support (disables on-board LED driver)
  • Headers for PS2 support

Other Options

It is not recommended to use a fightstick board, such as products from Brook or the generic "zero delay encoder" boards you find on Amazon or eBay, as these do not have inputs for encoders or connectors for LEDs.