Coder Social home page Coder Social logo

switch_arcade's Introduction

Arcade Nintendo Switch Controller

Nintendo Switch connected to 2 joysticks and 18 arcade buttons

This project creates a Nintendo Switch controller from 18 arcade buttons and 2 joysticks. No soldering is needed.

Starting from the top of the photo is the Nintendo Switch. The white USB cable connects to the bare circuit board named the "Adafruit Feather RP2040 with USB Type A Host". The Adafruit board provides the secret sauce to bridge the Nintendo Switch and the two USB arcade controller boards.

The Adafruit board connects to a USB hub. The hubs connects to the USB arcade controllers. All of the arcade buttons, joysticks, and USB controller boards were purchased as a bundle.

The left joystick with blue buttons matches the left blue joycon. The joystick corresponds to the small blue joycon joystick. The blue arcade buttons map to the left side joycon buttons. Similarly for the right joystick.

Support for for one USB trackball has been added. See the end of this article.

Left Side Blue Controls

Left joystick arcade controller with labels showing joycon buttons

Button # Joycon button
0 Left Trigger (ZL)
1 Left Throttle (L)
2 Minus (-)
3 Left stick button (LSB)
4 Capture (square button with circle)
5 Up (direction pad)
6 Down (direction pad)
7 Left (direction pad)
8 Right (direction pad)

Right Side Red Controls

Right joystick arcade controller with labels showing joycon buttons

Button # Joycon button
0 Right Trigger (ZR)
1 Right Throttle (R)
2 Plus (+)
3 Right Stick Button (RSB)
4 Home (House icon)
5 Y
6 B
7 A
8 X

Hardware

  • 1 x Nintendo Switch with USB type C to type C cable

  • 1 x Adafruit Feather RP2040 with USB Type A Host

  • 1 x USB hub, unpowered

  • 2 x USB cables, short

  • 2 x USB arcade controller

  • 9 x blue arcade buttons

  • 9 x red arcade buttons

  • 1 x blue joystick

  • 1 x red joystick

Easy Install

This is the best option if you do not want to change the code.

Put Adafruit board in UF2 bootloader mode. https://learn.adafruit.com/adafruit-feather-rp2040-with-usb-type-a-host/pinouts#buttons-and-rst-pin-3143253

Drag and drop switch_arcade.ino.adafruit_feather_usb_host.uf2 on to the USB drive named RPI-RP2. Wait a few seconds for the board to finish flashing the code. The board is ready to be used with a Nintendo Switch and arcade controls.

Getting Started with the Arduino IDE

Highly recommended tutorial https://learn.adafruit.com/adafruit-feather-rp2040-with-usb-type-a-host if you want to customize the software. See the section on setting up the Arduino IDE and installing the Arduino-Pico board package.

The tutorial is valuable source of information for connecting analog joysticks to the board analog inputs. Or if connecting more buttons for macros to the board digital inputs. Some soldering required.

Dependencies

Install the following libraries using the IDE Library manager.

  • "Adafruit TinyUSB Library"
  • "Pico PIO USB"

Install the following library by downloading a zip file from github.com then use the IDE "Add .ZIP library" option to install it.

IDE Tools options required

  • Set "Board" to "Adafruit Feather RP2040 USB Host"
  • Set "USB Stack" to "Adafruit TinyUSB"
  • Set "CPU Speed" to 120MHz.

USB Trackball

USB trackball connected to Nintendo Switch

Instead of plugging in a hub and two USB arcade controllers, a single USB mouse or trackball may be used. The mouse/trackball movement controls the left joystick. The left mouse/trackball button controls the gamepad A button. The right mouse/trackball button controls the gamepad B button.

A trackball is useful for classic games such a Missile Command or Centipede because the 1980's arcade cabinets used trackballs instead of joysticks. A large Kensington trackball works nicely with Missile Command.

Warning: Fancy gaming mice with lots of extra buttons may not work.

switch_arcade's People

Contributors

touchgadget avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

embankment

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.