Classiclll's Blog

an old boy

ira-ira-bar sample sketch #4 for Wrj4P5 for Proce55ing (final )

イメージ 1

ira-ira-bar (in progress) WRJ4P5(WiiRemoteJ For Proce55ing)





前記事の残骸が、(wrj4P5の不安定さを除いて)ちゃんとなったので、再掲。


ライブラリWrj4P5がだいぶ安定したので、アルファ版ながらsourceforgeで公開開始。
(ここ二週間、sourceforgeの使い方を理解するのに使ったも同然。でも、まだ、わかっていない)
(アルファ版公開のアナウンスは、ここと、本家Discourceへの予定)

Wiiリモコンの左右の傾きを検出して、LEDが左右に転がり、左右の壁にタッチすると赤くなり(音はまだならない)、一定時間以上止まっていたら振動する(はずだけど、サンプルはコメントアウト?)。

*ビデオの最後あたりはPPC Macだけの不具合のため、BlueToothユーティリティからリモコンのエントリーを削除しているところ。これをやらないと次の接続が認識されない。・・・なんでPPC Macだけ??


下記は、現時点のスクリプト。(ガラクタ置き場のアプレットのsourceリンクの先も同じ)
import lll.wrj4P5.*;
import lll.Loc.*;
Wrj4P5 wii;float pos=1;int lastFr=0;
boolean[] led = new boolean[4];

void setup() {
  size(300,300);
  wii=new Wrj4P5(this).connect();
} 

void draw() {
  if (wii.isConnecting()) return;
  background(0);
  stroke(color(128,128,255));
  translate(300/2,300/2);
  Loc v = wii.rimokon.senced;
  float vel=1.5*v.dot(new Loc(-1,0,0));
  pos=constrain(pos+vel,-1,4);
  int now = int(constrain(pos,0,3));
  if (0<now && now<3) lastFr=frameCount; 
  for(int i=0;i<4;i++) {
    if (i==now) {
      fill((frameCount-lastFr>20?color(255,128,128):color(128,128,255)));led[3-i]=true;
    }else if (abs(pos-i)<0.5) {
      fill(color(64,64,198));led[3-i]=true;
    }else{
      noFill();led[3-i]=false;
    }
    ellipse(50*(i-1.5),0,20,20);
  }
//  if (frameCount-lastFr>20) wii.rimokon.vibrateFor(100);
  wii.rimokon.setLEDs(led);
}



Processing については、
日本語サポートサイトからたどれるP5インフォメーション→言語が参考になる。
(解説してあるのは一昔前の版だから注意が必要だけど、loop()→draw()の読み替えだけで大抵OK)
・山本徹(thoru)さんがFunProce55ingで解説してくれている。(【簡潔】で【わかり易く】、【楽しい】解説)
例題集は習作集と区別するためにこちらに置いている。
・P5のスケッチからアプレットを作り、【ジオシティーズ】にアップする手順をまとめたので、参考に。