Wii nunchuck

You are currently browsing articles tagged Wii nunchuck.

wii-overview.ii

See the latest version in the documentation wiki.

Scorpia shared his experience interfacing a Wii Nunchuck with the Bus Pirate I2C library. He used Seeed Studio’s breakout board that brings all the Nunchuck signals to an easy-to-tap header. Here’s some alternatives to the breakout board.

Bus Pirate Wii Nunchuck breakout
MOSI/SDA D (SDA)
CLOCK/SCL C (SCL)
+3.3volts +
GND - (GND)

Connect the Bus Pirate to the Wii Nunchuck breakout board as shown in the table. The nunchuck is powered from the Bus Pirate’s on-board 3.3volt regulator. The nunchuck has very small value internal pull-up resistors on the I2C bus pins, so the Bus Pirate on-board pull-up resistors aren’t needed.

Open the mode menu (m) in the Bus Pirate terminal and select the software I2C library (4). Enable the Bus Pirate’s power supplies (big ‘W’).

I2C>[0xa4 0x40 0x00]<<<Wii Nunchuck initialize
I2C START CONDITION
WRITE: 0xA4 GOT ACK: YES<<<write address
WRITE: 0×40 GOT ACK: YES<<<write location (?)
WRITE: 0×00 GOT ACK: YES<<<write 0 to location 0×40 (?)
I2C STOP CONDITION
I2C>

Initialize the nunchuck, this only has to be done once. See also this example Arduino code.

I2C>[0xa4 0x00]<<<setup the read pointer
I2C START CONDITION
WRITE: 0xA4 GOT ACK: YES<<<write address
WRITE: 0×00 GOT ACK: YES<<<pointer to 0
I2C STOP CONDITION
I2C>[0xa5 r:6]<<<read nunchuck measurements
I2C START CONDITION
WRITE: 0xA5 GOT ACK: YES<<<read address
BULK READ 0×06 BYTES:<<read back 6 bytes
0×78 ACK 0×7A ACK 0×2F ACK 0×7D ACK 0×6E ACK 0×17 NACK
I2C STOP CONDITION
I2C>

Reading data from the nunchuck takes two steps. First, set the read pointer. Next, read six values to get the measurements, decoding guide here.
Read the rest of this entry »

Tags: , ,