• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language
    C++
  • License
    GNU Lesser Genera...
  • Created over 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Arduino library for communicating with Nintendo extension controllers

Nintendo Extension Controller Library

arduino-library-badge Build Status

This is an Arduino library that makes it easy to read data from Nintendo extension controllers such as the Wii Nunchuk and Classic Controller.

"Extension controller" is the name given to devices that extend the functionality of the Wiimote, plugging into the expansion port at the bottom of the device. While originally designed for Wiimote accessories, the port and communication protocol is now also being used for the controllers of Nintendo's new line of "Mini" consoles.

Getting Started

ClassicController Example in IDE

Make Your Connections

Before anything else, you need to connect your controller to the Arduino. The easist way to do this is with a breakout board, which slides in to the extension controller plug and doesn't require dismantaling your controller. I recommend the Nunchucky breakout, which is inexpensive and available at Adafruit.

Controllers require 3.3V power. If you don't have 3.3V power available on your board, you will need to use an external regulator. Using 5V power can result in erratic data and risks damaging your controller. For this reason it's recommended not to use so-called "inline" adapters that attach to the Arduino Uno's analog pins.

The "data" and "clock" lines on the breakout go to the SDA and SCL pins (respectively) on the microcontroller. For the Arduino Uno, these are pins A4 and A5. If you're not using an Uno, look here to find the IĀ²C pins for your Arduino board.

Run an Example

After installing the library, load an example by going to File -> Examples -> NintendoExtensionCtrl in the Arduino IDE and selecting an example specific to your controller. I recommend the DebugPrint examples to start, as they give you a nice overview of what data is available for your controller.

Plug in your controller, upload the example to your board, and have fun!

Supported Controllers

Wii

  • Nunchuk
  • Classic Controller

Wii Instruments

  • Guitar Hero Guitar
  • Guitar Hero World Tour Drums
  • DJ Hero Turntable

Wii Drawing Tablets

  • uDraw Tablet
  • Drawsome Tablet

Mini Console

  • NES Mini Controller
  • SNES Mini Controller

Currently the library supports any extension controller using unencrypted communication. If you'd like to add support for another controller, I've written a short guide that should be helpful.

License

This library is licensed under the terms of the GNU Lesser General Public License (LGPL), either version 3 of the License, or (at your option) any later version.

More Repositories

1

Adalight-FastLED

Adalight with FastLED support
C++
356
star
2

ArduinoXInput

XInput library for USB capable Arduino boards
C++
337
star
3

LED-Segment-ASCII

Library of ASCII character representations using 7 segment, 14 segment, and 16 segment LED displays
131
star
4

ArduinoXInput_AVR

AVR boards package for the ArduinoXInput project
C
70
star
5

Sim-Racing-Arduino

A library to connect sim racing peripherals to Arduino development boards
C++
53
star
6

OBS-ChatSpam

Python script for OBS Studio that posts messages in Twitch chat
Python
40
star
7

ArduinoXInput_Teensy

Teensy boards package for the ArduinoXInput project
C
29
star
8

Sim-Racing-Shields

Add-on circuit boards ("shields") for connecting Arduino development boards to sim racing equipment.
C
23
star
9

ServoInput

Interrupt-driven servo decoder library for Arduino
C++
21
star
10

HID_Buttons

Arduino library making it easier to use HID buttons
C++
20
star
11

Teensy40_Minimalist_USB_Host

A minimalist USB host shield for the Teensy 4.0 development board
20
star
12

FrameVis

A video visualizer / movie barcode generator
Python
15
star
13

OBS-Mute-Indicator

Python script for OBS Studio that sends the 'mute' state of an audio source over serial
C++
15
star
14

ArduinoXInput_Sparkfun

SparkFun boards package for the ArduinoXInput project
C
14
star
15

FastLED_NeoPixel

An Arduino library for using Adafruit NeoPixel library animations with FastLED
C++
14
star
16

Prismatik-iRacing

Prismatik plugin that maps data from the iRacing API
Python
12
star
17

DJHero-Lucio

Code and CAD files for the DJ Hero Lucio controller
C++
9
star
18

RC-Forza-Controller

Modified RC controller to play Forza Horizon 4.
C++
8
star
19

splitflap-youtube-stats

Script for fetching YouTube statistics from the API and sending them to a split-flap display
Python
8
star
20

Xbox360ControllerLEDs

Arduino library for emulating Xbox 360 controller LED animations
C++
7
star
21

McCree-Hammershot

Code and other files for the McCree Hammershot controller
Arduino
6
star
22

Pro_Micro_USB-A

ATMega32U4 Arduino board from SparkFun, modified to work with a USB-A connector
C++
5
star
23

MIDItoMoppy

Arduino library to convert MIDI notes to Moppy data
C++
5
star
24

DJHero-SpinRhythm

Code and CAD files for the DJ Hero modifications for Spin Rhythm XD
C++
5
star
25

AnalogSelector-Arduino

Arduino library for reading a potentiometer as a multi-selector switch
C++
3
star
26

CtrlUtil

Controller Utilities Library for Arduino
C++
2
star
27

OBS-Audio-Track-Hotkeys

Python script for OBS Studio that creates hotkeys for setting audio source track assignments.
Python
2
star
28

MediaFootswitch

Program files for the USB media footswitch controller https://www.partsnotincluded.com/diy-media-key-footswitch-for-pc/
C++
2
star