フォト
2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« Wii用ヌンチャクを購入しました | トップページ | UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 - »

2015年5月17日 (日)

Wiiヌンチャクの動作確認しました

以前購入したWiiヌンチャク用(多分ぱちもん)
ブレッドボードやArduinoに接続するアダプタが到着したので動作を確認しました。
動作確認にはちょっとハマりました。

アダプタはこんな感じの製品です。

Dscn3820

Wiiヌンチャクの端子にこんな感じで接続します。

Dscn3821

早速、arduinoに接続して動作を確認します。

arduinoでの使い方は次のサイトを参考にしました。
todbot blog - “WiiChuck” Wii Nunchuck Adapter Available

アダプタの接続はアナログポート A2からA5を使います。
A2 : Lレベル  0V出力 (GND)
A3 : Hレベル  5V出力
A4 : I2C SDA
A5 : I2C SCL

電圧は、3.3V推奨のようですが、5Vでも動作します。

Dscn3818

次にプログラムを参考サイトのリンクから入手しArduinoの書き込みます。
todbot/wiichuck_adapter - https://github.com/todbot/wiichuck_adapter

早速動かして見たのですが...

04

値がちゃんと取れません。プログラムを修正してエラーを返すようにしても
エラーは発生していないようです。
アダプタを抜くと、I2Cの通信エラーとなるのでI2Cのアドレスが正しく、かつ
データ取得も正常のようです。

05

そこで、以前製作したUART-I2C変換モジュールで動作確認してみました。

Dscn3819

接続して、TeraTermからサンプルソースを参考にして、I2Cのコマンドを
送信してみます。

@wA4@h4000 がハンドシェイク用のコマンド、@wA4@h0000が利用開始、
@gA406がデータ取得です。

06

試した感じでは、I2Cの通信は問題なさそうです。
ただし、読み取り値がFFFFFFFFFFと正常な値ではありません。

「うーん、これは不良品ではないだろうか」
取りあえず、WiiヌンチャクのI2Cコマンド仕様を探して調べてみることに...
多くのサイトで紹介されており、今回使ったコマンドで問題ないようです。
下記のサンプルやI2Cの解説も同じ感じです。
http://www.robotshop.com/media/files/PDF/inex-zx-nunchuck-datasheet.pdf

ところが、下記の資料の中で
http://web.engr.oregonstate.edu/~sullivae/ece375/pdf/nunchuk.pdf

次の文面を発見
To communicate with the Nunchuk,we must send a handshake signal.
If you are using a black Wii Nunchuk, send 2 bytes 0xF0, 0x55 to initialize
the first register and 0xFB, 0x00 to initialize the second register of the Nunchuk.
On a white Wii Nunchuk, send 0x40, 0x00 followed by 0x00.

要するに、「黒ヌンチャク」と「白ヌンチャク」でハンドシェイクで送るデータが違うようです。
サンプルソースや、出回っている情報は「白ヌンチャク」のものだけです。

私のは「白ヌンチャク」ですが、ぱちもんなので「もしかしたら...」と思い
「黒ヌンチャク」用のハンドシェイクを行ってみると、

07

それらしい値が帰ってきました。
私のは「黒ヌンチャク」のようです。

この修正をArduinoに反映してみると、それっぽい値が取れました。

08

ヌンチャクの操作によって値が変わります。
加速度センサーもちゃんと動いているようです。

I2Cで送信するコマンドは単純なので、IcihoJamでも使えそうです。

(追記)
IchigoJamでも試したのですが、結果はダメでした。
IchigoJamに、データ取得だけを行うコマンドがありません。
I2CR(I2Cアドレス、送信データアドレス、データ長、受信データアドレス、データ長)
というコマンドは、データ送信付きの受信コマンドのため使えませんでした。
データ長に0を指定すると256バイト送信されます。

今回は諦めることにします。


※上記のIchigoJamに関する記載は古いです。
最新のファームウェア1.2.2βでは利用できます。

(参考情報)
福野泰介の一日一創 IchigoJam trying to connect Wii Nunchuck via I2C

関連記事
LPC810を使ったUART-I2Cブリッジの改良版が出来ました (16/07/21)
LPC810を使ったUART-I2Cブリッジの機能拡張の検討中 (16/07/13)
UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 (15/05/17)
Wiiヌンチャクの動作確認しました (15/05/17) [この記事です]
LPC810を使ったUART-I2Cブリッジがやっと出来ました (15/04/15)
ATtiny13AでUART-I2Cブリッジを試作したが微妙 (15/03/29)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備3 (15/03/26)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備2 (15/03/25)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備 (15/03/24)

公開・ダウンロードサイト
GitHub - LPC810 UART-I2Cブリッジモジュール

« Wii用ヌンチャクを購入しました | トップページ | UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 - »

arduino」カテゴリの記事

LPC810」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/61601902

この記事へのトラックバック一覧です: Wiiヌンチャクの動作確認しました:

« Wii用ヌンチャクを購入しました | トップページ | UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 - »