A handy library to use the Super Nintendo Gamepad with your Arduino.
Arduino C++ C
Switch branches/tags
Nothing to show



SNESpaduino is a simple library to make an Arduino communicate with a Super Nintendo ( SNES ) Gamepad. The core function is very simple, and easy to understand through the comments in the code.

Read my blogpost on this project for more information:

English: http://en.tacticalcode.de/2013/06/snespaduino-super-nintendo-gamepad-for-arduino.html

German: http://www.tacticalcode.de/2013/06/snespaduino-super-nintendo-gamepad-fur-arduino.html

Other post(s) to come, explaining how the gamepad actally works


  • Download and copy the SNESpaduino Folder, containing both .cpp and .h files, to your Arduino libraries directory.
  • Include the library header file into your project ( #include <SNESpaduino.h> )
  • Create a new instance of the SNESpaduino class ( SNESpaduino pad(PIN_LATCH, PIN_CLOCK, PIN_DATA); )
  • Call the getButtons() function, which will return the current state of all 12 buttons ( uint16_t btns = pad.getButtons(); )

Parse data

The easiest way to process the incoming data is AND'ing it with the bitmasks defined as constants in SNESpaduino.h.

Look into the examples directory for some code examples. Also, read the blogpost linked above for more information.

Interfacing the SNES Gamepad

There are 5 wires connecting to the Gamepad: +5V, GND, Latch, Clock, Data. Connect +5V and GND to the Arduino's 5V/GND pins. Latch, Clock and Data can be connected to any pin that can digitally read.

Again, read the blogpost for more details :)


Creative Commons Attribution-ShareAlike Unported 3.0 ( CC-BY-SA 3.0 )


Feel free to contact me, if you have any questions or feedback!

Author: Damon Dransfeld