ホーム » スタッフ » 斉藤徹 » Wiimote.pdeにIRセンサー取得を追加

2010年9月
« 8月   10月 »
 1234
567891011
12131415161718
19202122232425
2627282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

Wiimote.pdeにIRセンサー取得を追加

ProcessingでWiiリモコンを使う方法で、WiiFlashを使って加速度などの基本値はとれるようになったけど、 「IRイメージセンサの座標が取れない」との質問。 仕方がないので、WiiFlashのソースコード"Window1.xaml.cs"をざら読み。 ネットワークに取得値を書き込んでいる所のコードを眺めて、 以下のような追加をすればいいことが分かった。

class Wiimote {
...略...
void update() {
boolean dataHasCome = false;
while (client.available() > 80) {
if (buffer == null) {
buffer = new int[80];
}
for (int i = 0; i < 80; i++) {
buffer[i] = client.read();
}
dataHasCome = true;
}
if (buffer == null || !dataHasCome) {
return;
}
bufferPos = 1;
batteryLevel = (float)readByte() / 0xC8;
updateButtons(readShort());
x = readFloat();
y = readFloat();
z = readFloat();
extensionType = readByte();
/** IRセンサー added by T-Saitoh **/
bufferPos += 21 ;
ir0  = readByte() ;    // 1つ目のIRセンサーが値をとれた
ir0x = readFloat() ;   // 1つ目のX,Y
ir0y = readFloat() ;   // (9/15)readShort()->readFloat()修正
ir1  = readByte() ;    // 2つ目のIRセンサーが値をとれた
ir1x = readFloat() ;   // 2つ目のX,Y
ir1y = readFloat() ;
}
...略...
/** 拡張タイプ */
int extensionType;
/** 各ボタン */
Button one = new Button();
: 略...
Button right = new Button();
/** バッテリーの残量 */
float batteryLevel;
/** 加速度 */
float x, y, z;
/** IRセンサー added by T-Saitoh **/
int   ir0 ;
float ir0x , ir0y ; // (9/15)int->float修正
int   ir1 ;
float ir1x , ir1y ;
...略...
}

# 初心者学生さんに、『WiiFlashのコード嫁!!』 とは言えんか…