加速度を取り出してみたい
同級生の多くがORFの準備に追われている中、僕は今更ながら卒プロを頑張りだしました←
その中で加速度を用いたモジュールを使おうと思ったのですが、電子工作の知識がない僕が一から作るのは非効率だと感じたので、どうにか楽をしようと考えた結果、axisOSCというアプリを用いてみました。
OSCプロトコルについては以前帰れま10のパネルもどきを作ってみたというエントリーでも使っていたあれです。同じ無線上にいれば、データのやりとりが可能になるあれです。早速作ってみましょう。
コードはこちら
まずはProcessing側に受信機を作ります。今回はx座標の加速度を取得してみます。加速度を取得するためには、/aOSC/acc/xから値を取得します。しっかりと型を確認しましょう。当たり前ですが、それがintであるか、floatであるかを正確に記述しないと動きません(厄介なことにコンパイルエラーは出ません。これに苦労させられました…)。
以上のことを踏まえ、Processingに以下の様なコードを書きます(Sako.logさんのコードを参考にしました)。
[java]
import oscP5.*;
import netP5.*;
OscP5 oscP5;
float accX;
void setup(){
size(500, 500);
oscP5 = new OscP5(this, 8173);//(this,好きなポート番号)
oscP5.plug(this,"getData","/aOSC/acc/x");//(this,関数,受け取る値)
background(255);
}
public void getData(float x) {
accX = x;
accX *= 20;
}
void draw(){
background(255);
noStroke();
fill(255, 0, 255);
ellipse(width/2, height/2, accX, accX);
}
[/java]
ポート番号はあまり正確に認識できていないのですが、割符のようなもので、大きい方の数字(5000番以上くらい?)であれば他の番号とぶつかることはないみたいです。
送信側は、アプリ側の指示に従えば大丈夫です。これで無料アプリとは、すごいですね。。
挙動
実際の挙動はこのような形になります。
本当はこれをOpenFrameworksでやりたいのですが(処理速度が速いですしね)、まだうまくいっていません…。早くここを連携させないとなにも始まらないので若干焦っております笑