//********************************
//加速度センサの値を取得するプログラム
//********************************
void setup()
{
// シリアルモニターの初期化をする
Serial.begin(9600) ;
}
void loop()
{
int i ;
long x,y,z;
//50回センサ値を読み込んで平均を算出
x=y=z=0;
for (i=0 ; i < 50 ; i++) {
x = x + analogRead(A0) ; // X軸
y = y + analogRead(A1) ; // Y軸
z = z + analogRead(A2) ; // Z軸
}
x = x / 50 ;
y = y / 50 ;
z = z / 50 ;
//int rotateX = (x-194)/0.72 - 90; //角度を求める式
int rotateX = (x-194)/0.72; //角度を求める式
//Serial.print(rotateX) ;
//Serial.print(" ") ;
//int rotateY = (y-338)/0.76 - 90;
//Serial.print(rotateY) ;
//Serial.println() ;
Serial.write('H'); // ヘッダの送信
Serial.write(highByte(rotateX)); // 上位バイトの送信
Serial.write(lowByte(rotateX)); // 下位バイトの送信
delay(50) ;
}
Processing側プログラム
import processing.serial.*;
Serial serial;
void setup() {
size(400, 250);
serial = new Serial( this, Serial.list()[0], 9600 );
}
void draw() {
background(10);
}
void serialEvent(Serial port) {
if ( port.available() >= 3 ) { // ヘッダ + 上位バイト + 下位バイト で合計3バイト
if ( port.read() == 'H' ) { // ヘッダ文字を見つけたところから読み取る
int high = port.read(); // 上位バイト読み込み
int low = port.read(); // 下位バイト読み込み
int recv_data = high*256 + low; // 上位・下位を合体させる
println(recv_data); // 結果の表示
}
}
}