« WiiChuckアダプタを試してみました | トップページ | 「iPhone・iPod touch ラボ」で、サイト開設2周年記念〜『新iPod touch 32GB』他をプレゼント »

WiiChuckアダプタを試してみました(2)

ArduinoとProcessingを使って、WiiChuckアダプタを試してみた話の続きです
Mynunchuckprintscreensnapz001

Arduinoのプログラム
昨日紹介したtodbot blog : “WiiChuck” Wii Nunchuck Adapter AvailableのページにあったWiiChuckDemoをモディファイしただけなので、深い所はどんな仕組みになっているのかはあまり調べてないので割愛します。

  • WiiヌンチャクはI2Cなので、Wireライブラリーが必要
    #include <Wire.h>
  • Wiiヌンチャク制御のための関数は、nunchuck_funcs.hに用意されてるので、インクルード
    #include "nunchuck_funcs.h"
  • Wiiヌンチャクの初期設定の為の関数:nunchuck_funcs.hにある以下をsetup()の中でコールする
    nunchuck_setpowerpins();
    nunchuck_init();
  • Wiiヌンチャクの各種データを得る関数:nunchuck_funcs.hにある以下をloop()の中でコールする
    nunchuck_get_data();
    accx  = nunchuck_accelx();
    accy  = nunchuck_accely();
    accz  = nunchuck_accelz();
    zbut = nunchuck_zbutton();
    cbut = nunchuck_cbutton();
    joyx = nunchuck_joyx();
    joyy = nunchuck_joyy();
  • あとは、シリアル通信などで、データを送信
    例:それぞれの値を、カンマで区切って送信

            //x accelation
            Serial.print((byte)accx,DEC);
            Serial.print(",");

            //Y accelation
            Serial.print((byte)accy,DEC);
            Serial.print(",");

            //Z accelation
            Serial.print((byte)accz,DEC);
            Serial.print(",");

            //Z button
            Serial.print((byte)zbut,DEC);
            Serial.print(",");

            //C button
            Serial.print((byte)cbut,DEC);
            Serial.print(",");
           
            //Joy stick X
            Serial.print((byte)joyx,DEC);
            Serial.print(",");
           
            //Joy stick Y
            Serial.println((byte)joyy,DEC);//最後はprintln

Processingのプログラム

初期設定:setup()

  • 使うフォントを作っておく
    Processingscreensnapz001

      //フォントをロードする
      font = loadFont("Osaka-Mono-12.vlw");
      //フォント使用開始:サイズ12
      textFont(font, 12);
  • 使うポートを調べておく(Arduinoの)
    Arduinoscreensnapz001

      //シリアルポートの設定
      myPort=new Serial(this,"/dev/tty.usbserial-A6008jwU",19200);
      myPort.clear();

シリアル通信処理:serialEvent(Serial p)

void serialEvent(Serial p){
  //Arduinoから送られてきたデータが
  //文字列の変数stringDataを用意し、
  //「10」(ラインフィード)が来るまで読み込む
  String stringData=myPort.readStringUntil(10);//最後はprintln
 
  //文字列データが空ではないとき
  if(stringData!=null){
    //文字列データに含まれる改行記号を取り除く
    stringData=trim(stringData);
 
    //整数型の配列data[]を用意し、
    //コンマ記号をもとに文字列データを区切って
    //配列data[]に整数化して入れておく
    int data[]=int(split(stringData,','));
 
    //配列data[]内のデータが7つなら、
    if(data.length==7){
      accx=data[0];
      accy=data[1];
      accz=data[2];
      zbut=data[3];
      cbut=data[4];
      joyx=data[5];
      joyy=data[6];
    }
  }
}

描画:draw()

serialEventで読み込んだ値を、各自、お好みの方法で描画して下さいな

ダウンロード
適当なプログラムなんですが、いちおう、上記のArduinoとProcessingのプログラムを、ここクリックで、ダウンロードできるようにしました

----------------
にほんブログ村 科学ブログ ロボットへ
にほんブログ村

|

« WiiChuckアダプタを試してみました | トップページ | 「iPhone・iPod touch ラボ」で、サイト開設2周年記念〜『新iPod touch 32GB』他をプレゼント »

Arduino / Processing」カテゴリの記事

WiiRemote関連」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: WiiChuckアダプタを試してみました(2):

« WiiChuckアダプタを試してみました | トップページ | 「iPhone・iPod touch ラボ」で、サイト開設2周年記念〜『新iPod touch 32GB』他をプレゼント »