That’s really all you have to do to connect a Nunchuk controller to an Arduino.
In the next section, you’ll see that the two wires connected to analog pins 4
and 5 are all we need to interface with the controller.
Talking to a Nunchuk
No official documentation shows how a Nunchuk works internally or how you
can use it in a non-Wii environment. But some smart hackers and makers
on the Internet invested a lot of time into reverse-engineering what’s happening
inside the controller.
All in all, it’s really simple, because the Nunchuk uses the Two-Wire Interface
(TWI), also known as I
2
C (Inter-Integrated Circuit) protocol.
1
It enables devices
to communicate via a master/slave data bus using only two wires. You
transmit data on one wire (Data), while the other synchronizes the communi-
cation (Clock).
The Arduino IDE comes with a library named Wire that implements the I
2
C
protocol. It expects the data line to be connected to analog pin 4 and the clock
line to analog pin 5. We’ll use it shortly to communicate with the Nunchuk,
but before that, we’ll have a look at the commands the controller understands.
2
To be honest, the Nunchuk understands only a single command: “Give me
all your data.” Whenever it receives this command, it returns 6 bytes that
have the following meanings:
7 6 5 4 3 2 1 0
Joystick x position
Joystick y position
X acceleration bits 9..2
Y acceleration bits 9..2
Z acceleration bits 9..2
Bit
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
Z accel.
bits 1..0
Y accel.
bits 1..0
X accel.
bits 1..0
Z
status
C
status
1.
http://en.wikipedia.org/wiki/I2c
2. At
http://todbot.com/blog/2010/09/25/softi2cmaster-add-i2c-to-any-arduino-pins/
, you can find a library
that allows you to use any pair of pins for I
2
C communication.
report erratum • discuss
Talking to a Nunchuk • 147
www.it-ebooks.info