# Arcade Fightstick

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/142/653/medium800/gaming_fstik-137.jpg?1772565659)

 **_Hadoken!_** Build a custom arcade-style USB fightstick in a 3D printed case using an Adafruit KB2040 board and GP2040-CE firmware. You can use it to play games on consoles, such as Switch, PlayStation, and Xbox, as well as Raspberry Pi-based RetroPie emulators and PC/Mac/Linux computers.

This joystick and arcade buttons are just the start -- you can add NeoPixel LEDs for dramatic, per-button lighting effects and an OLED LCD screen for settings and diagnostics.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/814/medium800/gaming_fstik-133.jpg?1772598585)

https://youtu.be/eA55A6IIOZw

## Parts
### Adafruit KB2040 - RP2040 Kee Boar Driver

[Adafruit KB2040 - RP2040 Kee Boar Driver](https://www.adafruit.com/product/5302)
A wild Kee Boar appears! It’s a shiny **KB2040**! An Arduino Pro Micro-shaped board for Keebs with RP2040. (#keeblife 4 evah) A lot of folks like using Adafruit parts for their Keeb builds – but with the ItsyBitsy not being pin-compatible with the Pro Micro pinout, it...

In Stock
[Buy Now](https://www.adafruit.com/product/5302)
[Related Guides to the Product](https://learn.adafruit.com/products/5302/guides)
![Angled shot of short black microcontroller.](https://cdn-shop.adafruit.com/640x480/5302-07.jpg)

### Small Arcade Joystick

[Small Arcade Joystick](https://www.adafruit.com/product/480)
This snappy 8-way joystick beckons you to play with it! It is rugged, and not too large, reminiscent of a Pac Man arcade cabinet. Unlike the potentiometer-based 2-axis and mini thumbsticks, this joystick uses 4 snap microswitches so it's good if you want a directional control but not the...

In Stock
[Buy Now](https://www.adafruit.com/product/480)
[Related Guides to the Product](https://learn.adafruit.com/products/480/guides)
![Small Arcade Joystick with red ball](https://cdn-shop.adafruit.com/640x480/480-00.jpg)

### Monochrome 1.3" 128x64 OLED graphic display - STEMMA QT / Qwiic

[Monochrome 1.3" 128x64 OLED graphic display - STEMMA QT / Qwiic](https://www.adafruit.com/product/938)
These displays are small, only about 1.3" diagonal, but very readable due to the high contrast of an OLED display. This display is made of 128x64 individual white OLED pixels, each one is turned on or off by the controller chip. Because the display makes its own light, no backlight is...

In Stock
[Buy Now](https://www.adafruit.com/product/938)
[Related Guides to the Product](https://learn.adafruit.com/products/938/guides)
![Monochrome 1.3" OLED module with Adafruit logos falling like snow](https://cdn-shop.adafruit.com/product-videos/640x480/938-05.jpg)

### Adafruit NeoPixel LED Strip with 3-pin JST Connector - 1 meter

[Adafruit NeoPixel LED Strip with 3-pin JST Connector - 1 meter](https://www.adafruit.com/product/4801)
Plug in and glow, this **Adafruit NeoPixel LED Strip with JST PH Connector** has **30 total LEDs** &nbsp;and is 1&nbsp;meter&nbsp;long, in classy Adafruit Black. It's not too long but has lots of glowing action.[...](https://www.adafruit.com/product/3900)

Out of Stock
[Buy Now](https://www.adafruit.com/product/4801)
[Related Guides to the Product](https://learn.adafruit.com/products/4801/guides)
![Adafruit NeoPixel LED Strip with 3-pin JST Connector lit up rainbow](https://cdn-shop.adafruit.com/640x480/4801-05.jpg)

### Part: Arcade Button
quantity: 8
30mm Translucent Clear
[Arcade Button](https://www.adafruit.com/product/471)

### Part: 16mm Panel Mount Momentary Pushbutton
quantity: 6
Black
[16mm Panel Mount Momentary Pushbutton](https://www.adafruit.com/product/1505)

### Part: Adafruit Perma-Proto Half-sized Breadboard PCB
quantity: 1
Single
[Adafruit Perma-Proto Half-sized Breadboard PCB](https://www.adafruit.com/product/1609)

### Part: JST PH 2mm 3-Pin Socket to Color Coded Cable
quantity: 1
200mm
[JST PH 2mm 3-Pin Socket to Color Coded Cable](https://www.adafruit.com/product/4046)

### Part: Adafruit Perma-Proto Half-sized Breadboard PCB
quantity: 1
Single
[Adafruit Perma-Proto Half-sized Breadboard PCB](https://www.adafruit.com/product/1609)

### Part: 2.54mm/0.1" Pitch Terminal Block
quantity: 2
7-pin
[2.54mm/0.1" Pitch Terminal Block](https://www.adafruit.com/product/2140)

### Part: 2.54mm/0.1" Pitch Terminal Block
quantity: 2
6-pin
[2.54mm/0.1" Pitch Terminal Block](https://www.adafruit.com/product/2135)

### Part: 2.54mm/0.1" Pitch Terminal Block
quantity: 2
7-pin
[2.54mm/0.1" Pitch Terminal Block](https://www.adafruit.com/product/2140)

### Part: STEMMA QT / Qwiic JST SH 4-pin Cable
quantity: 1
100mm Long
[STEMMA QT / Qwiic JST SH 4-pin Cable](https://www.adafruit.com/product/4210)

### Part: Arcade Button Quick-Connect Wire Pairs - 0.11"
quantity: 2
(10 pack)
[Arcade Button Quick-Connect Wire Pairs - 0.11"](https://www.adafruit.com/product/1152)

### Part: Purple Anodized Aluminum Bumper Feet
quantity: 2
Pack of 2
[Purple Anodized Aluminum Bumper Feet](https://www.adafruit.com/product/5050)

### Part: Blue USB Type C to USB A Cable 
quantity: 1
with 540 Degree Rotating End
[Blue USB Type C to USB A Cable ](https://www.adafruit.com/product/6279)

## Hardware
### Black Nylon Machine Screw and Stand-off Set – M2.5 Thread

[Black Nylon Machine Screw and Stand-off Set – M2.5 Thread](https://www.adafruit.com/product/3299)
Totaling 380 pieces, this **M2.5 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M2.5 size screws fit almost all of the Adafruit breakout/dev board mounting holes...

In Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
![Black Nylon Screw and Stand-off Set with M2.5 Threads, kit box](https://cdn-shop.adafruit.com/640x480/3299-00.jpg)

### Black Nylon Machine Screw and Stand-off Set – M3 Thread

[Black Nylon Machine Screw and Stand-off Set – M3 Thread](https://www.adafruit.com/product/4685)
Totaling **420 pieces** , this **M3 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M3 size screws fit a number of&nbsp;Adafruit breakout/dev board...

In Stock
[Buy Now](https://www.adafruit.com/product/4685)
[Related Guides to the Product](https://learn.adafruit.com/products/4685/guides)
![Opened box showing many nylon screws](https://cdn-shop.adafruit.com/640x480/4685-01.jpg)

## M4 x 10mm long Button Head Screws, 6 ea.

Such as [these](https://www.mcmaster.com/91352A122/) from McMaster-Carr

## M4 x 4.7mm long Brass Tapered Head-Set Inserts for Plastic, 6 ea.

Such as [these](https://www.mcmaster.com/94180A351/) from McMaster-Carr

![](https://cdn-learn.adafruit.com/assets/assets/000/142/544/medium640/gaming_91352A122Gloss-Bluenegative_right_positive_front_standard15_1626470684_297_4x_637620495743152422.png?1771965664)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/545/medium640/gaming_94180A351_f95bbd6e-4b40-443e-8305-9e15450b1146_4x_638110316846724615.png?1771965830)

## Tools and Supplies
### Hook-up Wire Spool Set - 22AWG Solid Core - 10 x 25ft

[Hook-up Wire Spool Set - 22AWG Solid Core - 10 x 25ft](https://www.adafruit.com/product/3174)
This is a box of **ten** &nbsp;25ft&nbsp;spools of **solid-core** wire. The wire is easy to solder to, and when bent it keeps its shape pretty well. We like to have a few spools of this stuff around which is why this set is quite nice! We suggest picking up some wire...

In Stock
[Buy Now](https://www.adafruit.com/product/3174)
[Related Guides to the Product](https://learn.adafruit.com/products/3174/guides)
![Hook-up Wire Spool Set - 22AWG Solid Core in box with 10 colorful wires coming out.](https://cdn-shop.adafruit.com/640x480/3174-02.jpg)

### ATTEN 80W 110V Soldering Iron With Station

[ATTEN 80W 110V Soldering Iron With Station](https://www.adafruit.com/product/4921)
This compact but **80 Watt** -powerful stationary soldering iron is a great entry-level soldering station with all the fixins. It's not much more expensive than the chunky 'all-in-one" irons, but comes with a separate power supply and pen. Heats up fast and solders...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4921)
[Related Guides to the Product](https://learn.adafruit.com/products/4921/guides)
![Angled shot of assembled soldering station.](https://cdn-shop.adafruit.com/640x480/4921-00.jpg)

### Solder Wire - 60/40 Rosin Core - 0.5mm/0.02" diameter - 50 grams

[Solder Wire - 60/40 Rosin Core - 0.5mm/0.02" diameter - 50 grams](https://www.adafruit.com/product/1886)
If you want to make a kit you'll need some solder. This 0.1 lb (about 50 grams) spool is a good amount, not too much (like 1 lb spools) and not too little (like those little 'pocket clip' vials).  
  
This spool of solder contains approximately 0.6mm / .02" diameter in...

Out of Stock
[Buy Now](https://www.adafruit.com/product/1886)
[Related Guides to the Product](https://learn.adafruit.com/products/1886/guides)
![Solder Wire - 60/40 Rosin Core - 0.5mm/0.02" diameter.](https://cdn-shop.adafruit.com/640x480/1886-01.jpg)

### Flush diagonal cutters

[Flush diagonal cutters](https://www.adafruit.com/product/152)
These are the best diagonal cutters, large super-comfortable grip to use and have strong nippers for perfect trimming of wires and leads. I've used my pair every day for years.

In Stock
[Buy Now](https://www.adafruit.com/product/152)
[Related Guides to the Product](https://learn.adafruit.com/products/152/guides)
![Red and black diagonal flush cutters](https://cdn-shop.adafruit.com/640x480/152-02.jpg)

# Arcade Fightstick

## Fightstick Circuit

## Perma Proto Circuit
![](https://cdn-learn.adafruit.com/assets/assets/000/142/542/medium800/gaming_stick_fritz.jpg?1771965239)

The KB2040 board has enough GPIO pins to connect one button/joystick switch per input, so no multiplexing is required. You'll also hook up an OLED display over I2C using the STEMMA QT port, and NeoPixel power/ground/data.

Ground wires can be daisy chained to reduce the wiring runs, or simply use the ground rails on your PermaProto board to do individual runs.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/543/medium800/gaming_stick_schematic.jpg?1771965266)

## Breakout PCB Circuit

Alternately, you can have PCBs made at a service such as OshPark, JLCPCB, PCBWay, etc. This has the benefit of clearly labeled pins for the wiring screw terminals, as well as breaking out the USB power/ground/data+/data- pins for simplified panel mount USB connection.

Use the Gerber files linked here to have PCBs made.

[kb2040_fightstick_v1.3.zip](https://cdn-learn.adafruit.com/assets/assets/000/142/662/original/kb2040_fightstick_v1.3.zip?1772574705)
![](https://cdn-learn.adafruit.com/assets/assets/000/142/660/medium800/gaming_breakout_pcb.jpg?1772574529)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/661/medium800/gaming_breakout_pcb_bot.jpg?1772574538)

# Arcade Fightstick

## Software

## Install Firmware and Customize Settings

[GP2040-CE](https://gp2040-ce.info/#/installation)&nbsp;is an open source gamepad firmware that's compatible with RetroPie, Mac/PC/Linux, PlayStation 3/4/5, Nintendo Switch/Switch 2, Xbox 360/One/Series, mini consoles, and others. It runs on a number of microcontrollers that use the RP2040/RP2305 chips, such as Pico,&nbsp;[KB2040 Kee Boar](https://www.adafruit.com/product/5302), and more.

First you'll flash the KB2040 with the drag-and-drop .uf2 file and then customize settings within the web editor.

## Download Firmware

From the&nbsp;[GP2040-CE Downloads page](https://gp2040-ce.info/downloads/), click the Download button for the KB2040 firmware.

This will save a file named **GP2040-CE\_0.7.12\_KB2040.uf2** &nbsp;(or later) to your download location.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/549/medium640/gaming_kbdl.jpg?1771978145)

## Firmware Installation

[This page](https://gp2040-ce.info/installation)&nbsp;gives detailed instructions on installation, but the basic steps are:

- Plug the KB2040 into your computer with a known good data and power USB cable
- While holding the `BOOTSEL` button down, press and release the `RESET` button this puts the board into&nbsp; **BOOTSEL** /USB drive mode
- A new removable drive named&nbsp;`RPI-RP2`&nbsp;will appear on your computer
- Drag-and-drop the **GP2040-CE\_0.7.12\_KB2040.uf2** &nbsp;(or later) firmware&nbsp; **.uf2&nbsp;** file onto the&nbsp;`RPI-RP2`&nbsp;drive and wait for it to copy the file and reboot itself

![](https://cdn-learn.adafruit.com/assets/assets/000/142/550/medium640/gaming_hacks_gp2040logo.png?1771978334)

## Pin Mapping

The default pin mapping in GP2040-CE for the KB2040 is shown here. This will work well for almost all of the buttons and joystick input, but we want to make a few modifications so we can connect an OLED screen to the STEMMA QT port, `NeoPixels` to pin **7** (GP07) and a `Function` button to pin **6** (GP06), as shown below.

To make these changes we'll use the web configurator as shown next.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/557/medium640/gaming_kbmap.jpg?1771979780)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/558/medium800/gaming_kbmap_jep.jpg?1771980176)

## Button Test

This is a great time to test the controller to make sure basic button presses are working.

Plug the KB2040 into your computer with a known good USB-C data and power&nbsp;[cable](https://www.adafruit.com/product/3879). Head to this [gamepad tester](https://hardwaretester.com/gamepad) in your browser to see the button presses.

You can now use a jumper wire to short any mapped GPIO pin to ground -- those button presses will register on the controller tester.&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/563/medium640/gaming_test.jpg?1771982781)

## Web Configurator

Use a short wire to jumper KB2040 pin **SCK/CLK (GP18)** to a **GND** pin (see attached diagram for physical pin locations) and then press and release the **RESET** button. This puts the KB2040 into configuration mode. After a moment you can un-jumper the GPIO pin from ground.

This action has also caused the KB2040's GP2040-CE firmware to launch a web server you can access from your computer's web browser by visiting&nbsp;[http://192.168.7.1](http://192.168.7.1)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/551/medium640/gaming_jumper.jpg?1771978799)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/561/medium800/gaming_conf0.jpg?1771981036)

## Settings

Click on the&nbsp; **Configuration** menu item and then **GPIO Pin Mapping**.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/578/medium800/gaming_conf2.jpg?1771984632)

## Pin Map

Let's add the **Function** button assignment to KB2040 GPIO pin **6**. The **Function** button can be configured to help navigate the OLED menu and modify hotkeys.

Click the drop-down menu next to the **GP6** pin and pick `Function` from the list.

Click the **Save** button at the bottom of the GPIO pin mapping window.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/559/medium640/gaming_fn.jpg?1771980276)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/560/medium640/gaming_fn2.jpg?1771980548)

Danger: If you don't click Save at the bottom of a web configuration window you will lose your changes when you switch pages.

## Reboot

Any time you want to leave **Web-config** mode and test your changes you can reboot the KB2040 into **Controller** mode.

Click the **Reboot** button at the upper right of the config page.

In the pop-up window that show up, click **Controller&nbsp;** to restart in controller mode.

Then, test out your changes. When you're ready to return to web-config, simply re-jumper the **SCK/CLK&nbsp;** pin to&nbsp; **GND&nbsp;** and press&nbsp; **RESET** button on the KB2040.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/564/medium640/gaming_reboot.jpg?1771983013)

## LED Configuration

Next, we can map the KB2040 pin&nbsp; **7&nbsp;** to be the NeoPixel data pin. Click the **Configuration \> LED Configuration** menu item.

Then, set:&nbsp;

- **Data GPIO Pin** &nbsp;to `7`&nbsp;
- **LEDs Per Button** to `2 `
- **Max Brightness&nbsp;** to `100`
- **Brightness Steps** to `10`&nbsp;

We'll pick the eight 30mm arcade buttons to light up in the **RGB LED Button Order** section by dragging them from the **Available Buttons** column to the **Assigned Buttons** column as shown below. You can reorder them by drag-dropping them vertically as well.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/562/medium640/gaming_led1.jpg?1771981493)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/565/medium800/gaming_led2.jpg?1771983726)

## Peripheral Mapping

In order to use the OLED screen on the STEMMA QT port, we will need to set up I2C pin mapping. In **GPIO Pin Mapping** go to the **GP12** and **GP13** pins and delete the `R3` and `L3` assignments respectively by clicking the ' **x**' next to each, then click **Save** at the bottom.

Pick **Configuration \> Peripheral Mapping** from the top menu.

Turn **on** the **I2C0** selection switch and then map **SDA** as pin `12` and **SCL** as pin `13` as shown here. Then click **Save** at the bottom.

Notice if you go back to the GPIO Pin Mapping screen, **GP12** and **GP13** are now listed as "`Assigned to addon`".

&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/572/medium640/gaming_r3l3.jpg?1771984037)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/573/medium640/gaming_r3l3_2.jpg?1771984103)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/574/medium640/gaming_periph1.jpg?1771984165)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/575/medium640/gaming_periph2.jpg?1771984302)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/576/medium640/gaming_periph3.jpg?1771984340)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/577/medium640/gaming_assigned.jpg?1771984440)

## Display Configuration

Now we can set up the OLED display. Click **Configuration \> Display Configuration**.

Set **Hardware Options** to `Enabled`.&nbsp;

In Mode Options you can enable a splash screen (and even upload a custom 128x64 .png file if you want!), and turn on a display screen saver.

&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/579/medium640/gaming_disp1.jpg?1771984759)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/580/medium640/gaming_disp2.jpg?1771992655)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/583/medium640/gaming_disp5.jpg?1771992827)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/584/medium800/gaming_fightstick_logo.png?1771992851)

## Hotkeys Settings

To use the Function button for menu navigation on the OLED screen, you'll need to set up some hotkeys. Click on **Settings \> Hotkey Settings** in the main menu.

Add new Hotkeys for:

- Menu Up
- Menu Down
- Menu Left
- Menu Right
- Menu Select
- Menu Back
- Menu Toggle

You can do this by flipping the Fn switch and then picking a button to modify, then choose the action from the dropdown menu.

Hit **Save** when you're done.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/585/medium640/gaming_hot.jpg?1771997379)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/587/medium640/gaming_hot3.jpg?1771997476)

## Data Backup and Restoration

From the Configuration \> Data Backup and Restoration menu you can save all settings as a .json file and restore settings.

Here is saved settings file for this project:

[gp2040ce_backup.zip](https://cdn-learn.adafruit.com/assets/assets/000/142/815/original/gp2040ce_backup_20260304052515827.gp2040.zip?1772602057)
# Arcade Fightstick

## 3D Printing

![](https://cdn-learn.adafruit.com/assets/assets/000/142/812/medium800/gaming_caserender.jpg?1772597259)

## 3D Printed Parts

I designed the enclosure to house all of the controls and the KB2040 breakout on the lid and walls so all of the wiring can be contained and dressed before screwing on the bottom. There are also multiple supports built in to provide rigidity.

3MF files for 3D printing are oriented and ready to print on FDM machines using PLA filament. You can download the STEP or STL files below if you want to make modifications.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/658/medium640/gaming_cas5.jpg?1772573374)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/659/medium640/gaming_cas3.jpg?1772573420)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/648/medium800/gaming_cas1.jpg?1772556164)

[fightstick_v1.3mf](https://cdn-learn.adafruit.com/assets/assets/000/142/808/original/fightstick_v1.3mf?1772595559)
[fightstick_v1_stl.zip](https://cdn-learn.adafruit.com/assets/assets/000/142/809/original/fightstick_v1_stl.zip?1772595585)
[fightstick_v1.STEP.zip](https://cdn-learn.adafruit.com/assets/assets/000/142/810/original/fightstick_v1.STEP.zip?1772595627)
## Slice Settings for PLA

- Extruder 220ºC
- 0.2mm Layer Height
- 15% Grid infill
- No supports
- 60ºC heated bed

![](https://cdn-learn.adafruit.com/assets/assets/000/142/652/medium640/gaming_cas6.jpg?1772556542)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/657/medium800/gaming_fstik-102b.jpg?1772567560)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/656/medium800/gaming_fstik-39b.jpg?1772567401)

## Optional Text

The top plate has optional text embedded in it in the 3MF file. If you don't want this or can't print dual filament, use the plain STL file.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/655/medium800/gaming_fstik-23.jpg?1772565747)

# Arcade Fightstick

## Breakout PCB Assembly

## PCB Breakout Option

Here's how to assemble the Fightstick breakout PCB.

First, get your PCB, four 10-pin terminal block strips, two 16-pin socket headers (you can cut them down from longer strips), and the KB2040.

Solder the terminal block strips with their wire insertion ports facing out.

Solder the two socket headers to the top side of the board as shown here.

Solder two sets of 16-pin header strips to the KB2040 as shown.

Insert the KB2040 into the breakout PCB with the USB-C port facing the near edge and the STEMMA QT port above the "OLED" silkscreen text.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/654/medium640/gaming_fstik-1.jpg?1772565711)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/663/medium640/gaming_fstik-0.jpg?1772575311)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/664/medium640/gaming_fstik-2.jpg?1772575479)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/665/medium800/gaming_fstik-4.jpg?1772575576)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/666/medium800/gaming_fstik-5.jpg?1772575595)

### Note on PermaProto

If you want to use a PermaProto board instead of the custom PCB, check out the PermaProto Assembly page, then come back here for test wiring.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/827/medium640/gaming_permamap.jpg?1772658807)

## Breakout Wiring Button Test

Before wiring for the full case build, it's a good idea to test a single button. Cut the JST PH end off of an arcade button wiring cable and strip a small bit of insulation off of the two wire ends. Give the stranded wire a bit of a twist to prevent stray whiskers from shorting out.

Unscrew the&nbsp;`A1 Home` terminal screw and then insert one wire end into it. Screw it down tightly.

Connect the second wire to a `GND` terminal position.

Press each terminal connector to a lug on the button. Plug in the KB2040 and check that the button works on a controller tester site as done during the software setup.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/667/medium640/gaming_fstik-6.jpg?1772575728)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/668/medium640/gaming_fstik-8.jpg?1772575748)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/669/medium640/gaming_fstik-9.jpg?1772575758)

Primary: Buttons don't care which terminal goes to ground and which one goes to a GPIO pin, so no need to worry about it!

## NeoPixel Harness

Screw the 3-pin JST-SH socket cable into the `NeoPixel Din`, `3V`, and `GND` positions as shown, white for data, red for 3V, and black for ground.

This will make it convenient to plug in the NeoPixel strip both for testing and in the final build.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/670/medium640/gaming_fstik-10.jpg?1772576616)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/671/medium640/gaming_fstik-11.jpg?1772576626)

## OLED Display Hookup

Plug in the STEMMA QT cable to the KB2040 and the OLED breakout.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/672/medium640/gaming_fstik-12.jpg?1772576799)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/673/medium640/gaming_fstik-13.jpg?1772576808)

## Joystick Connection

Connect the joystick wires as follows:

- Black to `GND`
- Green to `UP`
- Yellow to `DN`
- Orange to `LF`
- Red to `RT`

![](https://cdn-learn.adafruit.com/assets/assets/000/142/674/medium640/gaming_fstik-14.jpg?1772576848)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/675/medium640/gaming_fstik-15.jpg?1772576857)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/676/medium640/gaming_fstik-16.jpg?1772576866)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/677/medium640/gaming_fstik-18.jpg?1772576969)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/678/medium800/gaming_fstik-17.jpg?1772576997)

## Minimum Viable Test Rig

Plug the NeoPixel strip into the JST extension cable you wired to the breakout. You're now ready to test all of the unique features of the fightstick!

Plug the USB cable into your computer and you should see the OLED display come on, the NeoPixels light up, and the button and joystick function when actuated.

If there are issues, check your wiring and that you have a known good USB cable.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/679/medium640/gaming_fstik-19.jpg?1772577036)

# Arcade Fightstick

## PermaProto Assembly

![](https://cdn-learn.adafruit.com/assets/assets/000/142/816/medium800/gaming_fstik-13-2.jpg?1772652588)

If you don't want to have a breakout PCB made you can use a 1/4 size PermaProto board, headers, and screw terminal blocks instead. This works great too, you just won't have the fancy silkscreen labels and extra per-button GND pins to work with, but you can daisy-chain your ground connections as shown in the Case Assembly section, so that shouldn't be a problem.

## Parts Prep

Here's what you'll need:

- [1/4 Sized PermaProto board](https://www.adafruit.com/product/1608)
- [Female header pins](https://www.adafruit.com/product/3008) cut into two 13-pin strips
- Male header pins (come with KB2040)
- 2 ea. [0.1" Pitch Terminal Block 10-pin](https://www.adafruit.com/product/2142)
- 2 ea. [0.1" Pitch Terminal Block 3-pin](https://www.adafruit.com/product/2136)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/817/medium640/gaming_fstik-1-2.jpg?1772652777)

## Solder Headers

First solder on the female socket headers -- you can use the KB2040 as a guide.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/818/medium640/gaming_fstik-3-2.jpg?1772657088)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/819/medium640/gaming_fstik-4-2.jpg?1772657133)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/820/medium640/gaming_fstik-7-2.jpg?1772657163)

## Solder Screw Terminal Blocks

Now, solder the 10- and 3-pin terminal blocks. Make sure to orient them so the wire entry positions face "out" toward the edges of the PCB, otherwise it'll be spectacularly difficult to insert wires!

![](https://cdn-learn.adafruit.com/assets/assets/000/142/821/medium640/gaming_fstik-9-2.jpg?1772657209)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/822/medium640/gaming_fstik-10-2.jpg?1772657223)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/823/medium640/gaming_fstik-12-2.jpg?1772657230)

Insert the KB2040 with the USB port facing out and you're ready to use it.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/824/medium800/gaming_fstik-13-2.jpg?1772657310)

## Wiring Chart

Use the wiring chart shown here when you build the test rig and the final build.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/826/medium800/gaming_permamap.jpg?1772658774)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/825/medium800/gaming_kbmap_jep.jpg?1772657449)

# Arcade Fightstick

## Case Assembly

A bunch of loose buttons and more flopping around is no fun, so it's time to put this whole shebang inside the case! Flip the lid upside down -- this is where the majority of the work will&nbsp; be done before adding the case side and bottom.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/685/medium800/gaming_fstik-24.jpg?1772577540)

## Mount the Display

Mount the OLED display as shown, using two M2.5 x 8mm screws and nuts.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/686/medium640/gaming_fstik-25.jpg?1772577637)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/687/medium640/gaming_fstik-26.jpg?1772577645)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/688/medium640/gaming_fstik-27.jpg?1772577653)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/689/medium640/gaming_fstik-28.jpg?1772577658)

## Optional Button Customization

The clear button housings are great for NeoPixel lighting, however if you want to add a bit of extra style to your build, you can swap the button caps from another button. You'll still get lighting effect, especially on the bezel.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/690/medium640/gaming_fstik-29.jpg?1772578432)

## Insert 30mm Buttons

Press the eight arcade buttons into the lid as shown. Make sure the button retention clips can clear the small NeoPixel guide posts.

&nbsp;

![](https://cdn-learn.adafruit.com/assets/assets/000/142/691/medium640/gaming_fstik-30.jpg?1772579225)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/692/medium640/gaming_fstik-31.jpg?1772580548)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/693/medium640/gaming_fstik-32.jpg?1772580635)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/694/medium640/gaming_fstik-33.jpg?1772580642)

## Attach 16mm Buttons

Insert the five 16mm buttons and use the washers and nuts to secure them. You can use a 3/4" socket to tighten the nuts down (or improvise with slip joint pliers, fingers, etc.).

![](https://cdn-learn.adafruit.com/assets/assets/000/142/695/medium640/gaming_fstik-34.jpg?1772580676)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/696/medium640/gaming_fstik-35.jpg?1772580685)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/697/medium640/gaming_fstik-36.jpg?1772580693)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/698/medium640/gaming_fstik-37.jpg?1772580702)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/699/medium640/gaming_fstik-38.jpg?1772580712)

## Reset Button Mounting

Mount the 16mm reset button to the outside of the case as shown here. Note: skip the washer and just use the nut alone to secure this button.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/719/medium640/gaming_fstik-64.jpg?1772586590)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/720/medium640/gaming_fstik-65.jpg?1772586598)

## Threaded Inserts

Use your soldering iron (and an optional insert setter tip) at around 395ºC to insert the six M4 threaded inserts into the the top side of the case walls.

Repeat for the bottom side.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/727/medium640/gaming_fstik-80.jpg?1772586970)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/728/medium640/gaming_fstik-82.jpg?1772586982)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/729/medium640/gaming_fstik-84.jpg?1772586993)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/730/medium640/gaming_fstik-85.jpg?1772587007)

## Breakout Mount

Mount the PCB breakout to the lid using four sets of M3 x 10mm screws, washers, and nuts. You can use standoffs or just double up on the washers and nuts to lift the board up a bit as shown here.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/700/medium640/gaming_fstik-44.jpg?1772583724)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/701/medium640/gaming_fstik-45.jpg?1772583739)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/702/medium640/gaming_fstik-46.jpg?1772583747)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/703/medium640/gaming_fstik-47.jpg?1772583759)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/704/medium640/gaming_fstik-48.jpg?1772583767)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/705/medium640/gaming_fstik-50.jpg?1772583789)

## NeoPixel Strip

Cut a 16 LED section of the NeoPixel strip and remove the silicone weatherproofing sheath.

Plug the strip into the JST extender you previously wired to the breakout, or cut off the JST connector and strip some insulation from the tips and screw the wires directly into the terminal blocks if you prefer. This can help save some wiring space.

Wrap the strip around the arcade buttons with two LEDs per button as shown here.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/706/medium640/gaming_fstik-51.jpg?1772583975)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/707/medium640/gaming_fstik-52.jpg?1772584000)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/708/medium640/gaming_fstik-53.jpg?1772584018)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/709/medium640/gaming_fstik-55.jpg?1772584032)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/710/medium640/gaming_fstik-57.jpg?1772584217)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/711/medium640/gaming_fstik-59.jpg?1772584248)

## Ground Wires

You can do direct runs from the breakout to each button (either leg on the button can be ground). Or, you can get a bit fancy and create a daisy chain using a single wire and multiple [0.11" crimp connectors](https://www.adafruit.com/product/4748) and a&nbsp;[crimping tool](https://www.adafruit.com/product/349).

![](https://cdn-learn.adafruit.com/assets/assets/000/142/712/medium640/gaming_fstik-61.jpg?1772584295)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/713/medium640/gaming_fstik-63.jpg?1772584323)

## Joystick Time

Mount the joystick as shown using four M4 x 10mm screws, washers and nuts. (It can help to set the lid on the printed case walls since the lid can no longer lay flat).

Plug in the joystick wiring harness. If the wires aren't already connected to the breakout from the testing step, re-connect them now:

- Black to `GND`
- Green to `UP`
- Yellow to `DN`
- Orange to `LF`
- Red to `RT`

![](https://cdn-learn.adafruit.com/assets/assets/000/142/714/medium640/gaming_fstik-68.jpg?1772584580)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/715/medium640/gaming_fstik-66.jpg?1772584681)

## Button Wiring

Here are two diagrams that may help with button wiring -- the first is a top view of the fightstick with the primary and secondary buttons labeled. The second image is the same arrangement but flipped as seen from the inside view while wiring.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/716/medium800/gaming_top_buttons.jpg?1772586457 top button view)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/717/medium800/gaming_flipped_buttons.jpg?1772586448 inside button view)

Using those views and the breakout labels as your guide, wire up the remaining buttons as shown. Run your wires neatly and keep them to the sides of the supports so they won't interfere when closing the case later.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/718/medium800/gaming_fstik-69.jpg?1772586524)

## Tidy Up the Wires

You can tidy up and secure your wires a bit more by wrapping discreet bundles with zip ties, thread, or thin wire as shown here.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/721/medium640/gaming_fstik-70.jpg?1772586764)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/722/medium640/gaming_fstik-71.jpg?1772586774)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/723/medium640/gaming_fstik-73.jpg?1772586792)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/724/medium640/gaming_fstik-74.jpg?1772586805)

Black: For the utmost in tidy wiring check out the [UKFightModz Fightstick Wiring Guide](https://drive.google.com/file/d/1Ho5ItRj8jMYTG4tVbq0kyc-aFqbbF-iD/view).

## Connect Reset Button

Connect ground and reset wires to the reset button you mounted to the case.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/725/medium640/gaming_fstik-75.jpg?1772586890)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/726/medium640/gaming_fstik-76.jpg?1772586900)

## Secure Lid to Case Walls

Place the lid on top of the case walls, making sure the lid is lined up with the inset lip.

Use six M4 x 10mm screws to secure the lid to the walls, screwing them into the threaded standoffs.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/731/medium640/gaming_fstik-87.jpg?1772587122)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/733/medium640/gaming_fstik-91.jpg?1772587148)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/732/medium640/gaming_fstik-88.jpg?1772587133)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/734/medium640/gaming_fstik-92.jpg?1772587165)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/782/medium800/gaming_fstik-94.jpg?1772587461)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/783/medium800/gaming_fstik-95.jpg?1772588470)

## USB Cable

Run the USB C end of your cable through the opening in the case wall. Plug it into the KB2040.

Use a zip tie to lash the cable to a support for strain relief.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/784/medium640/gaming_fstik-96.jpg?1772588797)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/785/medium640/gaming_fstik-98.jpg?1772588805)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/786/medium640/gaming_fstik-99.jpg?1772588813)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/787/medium640/gaming_fstik-101.jpg?1772588821)

## Feet

Screw the four feet to the base as shown.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/788/medium640/gaming_fstik-102.jpg?1772588916)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/789/medium640/gaming_fstik-103.jpg?1772588932)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/790/medium640/gaming_fstik-105.jpg?1772588941)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/792/medium640/gaming_fstik-106.jpg?1772588963)

## Close It Up

Being sure to keep all wires clear, line up the base with the case walls and press it closed -- you should feel the support snap into place.

Screw the base into place with six M4 x 10mm screws.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/793/medium640/gaming_fstik-107.jpg?1772589002)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/794/medium640/gaming_fstik-109.jpg?1772589020)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/795/medium640/gaming_fstik-111.jpg?1772589034)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/796/medium640/gaming_fstik-113.jpg?1772589044)

## Joystick Topper

Place the joystick disk over the shaft.

Screw the topper knob onto the shaft.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/797/medium640/gaming_fstik-115.jpg?1772589181)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/798/medium640/gaming_fstik-116.jpg?1772589188)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/799/medium640/gaming_fstik-117.jpg?1772589196)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/800/medium640/gaming_fstik-118.jpg?1772589203)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/801/medium800/gaming_fstik-120.jpg?1772589252)

# Arcade Fightstick

## Use the Fightstick

![](https://cdn-learn.adafruit.com/assets/assets/000/142/803/medium800/gaming_fstik-139.jpg?1772589783)

https://youtu.be/eA55A6IIOZw

### Splash

Plug in the Fightstick to a USB port on your game console or computer and you'll be greeted with the splash screen.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/802/medium640/gaming_fstik-122b.jpg?1772592920)

### Button Chart and NeoPixels

Once the Fightstick has started up, you'll see the screen switch to a button chart that shows joystick movement and button presses of the eight main buttons.

The NeoPixels will light up. Pressing a button will cause a secondary color to light up.

![](https://cdn-learn.adafruit.com/assets/assets/000/142/804/medium640/gaming_fstik-123.jpg?1772592942)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/805/medium640/gaming_fstik-124.jpg?1772593052)

![](https://cdn-learn.adafruit.com/assets/assets/000/142/806/medium640/gaming_fstik-125.jpg?1772593061)

## Button Chart

Here are the button names for reference:

![](https://cdn-learn.adafruit.com/assets/assets/000/142/807/medium800/gaming_top_buttons.jpg?1772593175)

Those are the generic GP2040-CE button names. Here's how they map to specific consoles:

| GP2040-CE | XInput  
Xbox One | Switch | PS4 | PS3 | DirectInput | Arcade |
| --- | --- | --- | --- | --- | --- | --- |
| B1 | A | B | Cross | Cross | 2 | K1 |
| B2 | B | A | Circle | Circle | 3 | K2 |
| B3 | X | Y | Square | Square | 1 | P1 |
| B4 | Y | X | Triangle | Triangle | 4 | P2 |
| L1 | LB | L | L1 | L1 | 5 | P4 |
| R1 | RB | R | R1 | R1 | 6 | P3 |
| L2 | LT | ZL | L2 | L2 | 7 | K4 |
| R2 | RT | ZR | R2 | R2 | 8 | K3 |
| S1 | Back | Minus | Share | Select | 9 | Coin |
| S2 | Start | Plus | Options | Start | 10 | Start |
| A1 | Guide | Home | PS | PS | 13 | Home |
| A2 | - | Capture | Touchpad | - | 14 | - |

![](https://cdn-learn.adafruit.com/assets/assets/000/142/828/medium800thumb/gaming_arcadelight.jpg?1772660661)

## Button Combos for NeoPixel Settings

You can adjust the lighting effect with the following combos at any time (`S1` is SEL and `S2` is START):

| Hotkey | Description |
| --- | --- |
| [`S1 + S2 + B3`](https://gp2040-ce.info/usage#buttons) | Next Animation |
| [`S1 + S2 + B1`](https://gp2040-ce.info/usage#buttons) | Previous Animation |
| [`S1 + S2 + B4`](https://gp2040-ce.info/usage#buttons) | Brightness Up |
| [`S1 + S2 + B2`](https://gp2040-ce.info/usage#buttons) | Brightness Down |
| [`S1 + S2 + R1`](https://gp2040-ce.info/usage#buttons) | LED Parameter Up |
| [`S1 + S2 + R2`](https://gp2040-ce.info/usage#buttons) | LED Parameter Down |
| [`S1 + S2 + L1`](https://gp2040-ce.info/usage#buttons) | Pressed Parameter Up |
| [`S1 + S2 + L2`](https://gp2040-ce.info/usage#buttons) | Pressed Parameter Down |

![](https://cdn-learn.adafruit.com/assets/assets/000/142/813/medium800/gaming_fstik-129.jpg?1772598542)

## Mini Menu

You can use the Mini Menu to switch Input Mode, D-Pad Mode, Profile, and more.

Press the `Fn + HOME` buttons to enter Mini Menu.

Then hold down&nbsp;`Fn + joystick` to navigate, `Fn + START` to pick a menu item or `Fn + SEL` to go back.

For example, if you want to change Input Mode from Xinput to Switch/Switch2:

- `Fn + Home` to enter Mini Menu
- `Fn + START` to pick Input Mode menu
- `Fn + joystick down` once to **Nintendo**  **Switch**
- `Fn + joystick down` to **Exit**
- `Fn + START` to pick Save & **Exit**

The Fightstick will now restart in **Switch** mode.

## Config Mode

You can also put the Fightstick into Config Mode so you can use your computer and the config web page. Press and hold `START` then press `Reset`. Go to [192.168.7.1](https://192.168.7.1) in your browser and configure away! You can also follow the instructions on the OLED screen to access a GPIO pin viewer, Stats, and more.


## Featured Products

### Adafruit KB2040 - RP2040 Kee Boar Driver

[Adafruit KB2040 - RP2040 Kee Boar Driver](https://www.adafruit.com/product/5302)
A wild Kee Boar appears! It’s a shiny **KB2040**! An Arduino Pro Micro-shaped board for Keebs with RP2040. (#keeblife 4 evah) A lot of folks like using Adafruit parts for their Keeb builds – but with the ItsyBitsy not being pin-compatible with the Pro Micro pinout, it...

In Stock
[Buy Now](https://www.adafruit.com/product/5302)
[Related Guides to the Product](https://learn.adafruit.com/products/5302/guides)
### Small Arcade Joystick

[Small Arcade Joystick](https://www.adafruit.com/product/480)
This snappy 8-way joystick beckons you to play with it! It is rugged, and not too large, reminiscent of a Pac Man arcade cabinet. Unlike the potentiometer-based 2-axis and mini thumbsticks, this joystick uses 4 snap microswitches so it's good if you want a directional control but not the...

In Stock
[Buy Now](https://www.adafruit.com/product/480)
[Related Guides to the Product](https://learn.adafruit.com/products/480/guides)
### Arcade Button - 30mm Translucent Clear

[Arcade Button - 30mm Translucent Clear](https://www.adafruit.com/product/471)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. They're the same size as common arcade controls (often referred to as 30mm diameter) but have some nice things going for them that justify the extra dollar.  
  
First,...

In Stock
[Buy Now](https://www.adafruit.com/product/471)
[Related Guides to the Product](https://learn.adafruit.com/products/471/guides)
### Monochrome 1.3" 128x64 OLED graphic display - STEMMA QT / Qwiic

[Monochrome 1.3" 128x64 OLED graphic display - STEMMA QT / Qwiic](https://www.adafruit.com/product/938)
These displays are small, only about 1.3" diagonal, but very readable due to the high contrast of an OLED display. This display is made of 128x64 individual white OLED pixels, each one is turned on or off by the controller chip. Because the display makes its own light, no backlight is...

In Stock
[Buy Now](https://www.adafruit.com/product/938)
[Related Guides to the Product](https://learn.adafruit.com/products/938/guides)
### 16mm Panel Mount Momentary Pushbutton -  Black

[16mm Panel Mount Momentary Pushbutton -  Black](https://www.adafruit.com/product/1505)
OK, this item is pretty simple - it's a panel mount pushbutton. It's not that exciting, no LEDs, no bells & whistles. But we really like it anyways – look at that lovely rounded shape, that elegant bevel. If you're going to go with a momentary pushbutton, let it be this...

In Stock
[Buy Now](https://www.adafruit.com/product/1505)
[Related Guides to the Product](https://learn.adafruit.com/products/1505/guides)
### Adafruit NeoPixel LED Strip with 3-pin JST Connector - 1 meter

[Adafruit NeoPixel LED Strip with 3-pin JST Connector - 1 meter](https://www.adafruit.com/product/4801)
Plug in and glow, this **Adafruit NeoPixel LED Strip with JST PH Connector** has **30 total LEDs** &nbsp;and is 1&nbsp;meter&nbsp;long, in classy Adafruit Black. It's not too long but has lots of glowing action.[...](https://www.adafruit.com/product/3900)

Out of Stock
[Buy Now](https://www.adafruit.com/product/4801)
[Related Guides to the Product](https://learn.adafruit.com/products/4801/guides)
### JST PH 2mm 3-Pin Socket to Color Coded Cable - 200mm

[JST PH 2mm 3-Pin Socket to Color Coded Cable - 200mm](https://www.adafruit.com/product/4046)
This cable will let you turn a JST PH 3-pin cable _socket_ into 3 individual tinned wires. These are great to match up with our JST 3-PH cables, for extending and connecting sensors or LEDs, and the wires are even color coded!

[We...](https://www.adafruit.com/product/3893)

In Stock
[Buy Now](https://www.adafruit.com/product/4046)
[Related Guides to the Product](https://learn.adafruit.com/products/4046/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)

## Related Guides

- [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040.md)
- [Guardian Robot – Zelda BOTW](https://learn.adafruit.com/guardian-robot-zelda-botw.md)
- [DOOM Keeb](https://learn.adafruit.com/doom-keeb.md)
- [AdaBox 017](https://learn.adafruit.com/adabox017.md)
- [MIDI Melody Maker](https://learn.adafruit.com/midi-melody-maker.md)
- [Adafruit Trinkey QT2040](https://learn.adafruit.com/adafruit-trinkey-qt2040.md)
- [PB Gherkin 30% keyboard with KMK, CircuitPython, & KB2040](https://learn.adafruit.com/pb-gherkhin-30-keyboard-with-kmk-circuitpython-kb2040.md)
- [Animated Flying Toaster OLED Jewelry](https://learn.adafruit.com/animated-flying-toaster-oled-jewelry.md)
- [USB MIDI Keyset Controller](https://learn.adafruit.com/midi-keyset.md)
- [Fisher-Price USB Controller](https://learn.adafruit.com/fisher-price-usb-controller.md)
- [May Pad Macropad with the KB2040, KMK, and CircuitPython](https://learn.adafruit.com/maypad-macropad-with-the-kb2040-kmk-and-circuitpython.md)
- [Using the TRRS Trinkey as an Assistive Technology Device](https://learn.adafruit.com/using-the-trrs-trinkey-as-an-assistive-technology-device.md)
- [Huzzah Weather Display](https://learn.adafruit.com/huzzah-weather-display.md)
- [Monitor Your Greenhouse with a No-Code Environmental Sensor](https://learn.adafruit.com/monitor-your-greenhouse-with-a-no-code-environmental-sensor.md)
- [Guardian Robot with LEDs](https://learn.adafruit.com/guardian-robot-with-leds.md)
- [How to Choose a Microcontroller](https://learn.adafruit.com/how-to-choose-a-microcontroller.md)
