« ArduinoとProcessing その1 | Main | コードを書きたいか? »

January 25, 2012

ArduinoとProcessing その2

ArduinoとProcessing その1で センサからの信号を、Arduinoで計測し、Processingで受信し、表示するSketchを描いてみました。
 使用するセンサは、秋月電子の三軸加速度センサKXM52-1050モジュールを使ってみました。Arduino

側のSketchは、2回計測した差分データの送信をおこなうように描いてみました。データ処理の都合

上で、桁数を合わせるために、20000を加算しています。

void setup() {
Serial.begin(9600);
}
int sensor[30];
int x_dat[10];
int y_dat[10];
int z_dat[10];
void loop() {
sensor[1] = analogRead(A0);
x_dat[1]=sensor[1];
sensor[2] = analogRead(A1);
y_dat[1]=sensor[2];
sensor[3] = analogRead(A2);
z_dat[1]=sensor[3];
delay(10);
sensor[11] = analogRead(A0);
x_dat[2]=sensor[11];
sensor[12] = analogRead(A1);
y_dat[2]=sensor[12];
sensor[13] = analogRead(A2);
z_dat[2]=sensor[13];
delay(10);
x_dat[0]=x_dat[2]-x_dat[1]+20000;
y_dat[0]=y_dat[2]-y_dat[1]+20000;
z_dat[0]=z_dat[2]-z_dat[1]+20000;
Serial.print("{");
Serial.print("x");
Serial.print(x_dat[0],DEC);
Serial.print("y");
Serial.print(y_dat[0],DEC);
Serial.print("z");
Serial.print(z_dat[0],DEC);
} 

3d01
 Processing側は、計測したデータを、中心からの偏移量として表示するSketchを描きます。
import processing.serial.*;
Serial myPort; // シリアルポートのクラス
int val=0; // 受信データ

void setup(){
size(640,480,P3D);
fill(10,100,10);
noStroke();
println(Serial.list());
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);
println("set Serial Port");
}
int i=0;
int[] atai =new int[20];
int[] x_dat=new int[20];
int[] y_dat=new int[10];
int[] z_dat=new int[10];
int[] cg_x=new int[100];
int[] cg_y=new int[100];
int[] cg_z=new int[100];
int x=0,y=0,z=0;
int j=0;
void draw(){
camera(0,0,0,width/2,height/2,0,1,0,0);//カメラ:位置,方向,無期
lights();//光源処理ON
directionalLight(255,255,255,-1,0,0);//光源位置、光源方向
background(211, 128, 100);
translate(width/2, height/2, 0);
fill(200,100,10);
sphere(10);
for (int cnt=0;cnt<100;cnt++){
if (myPort.available()>0){
val=myPort.read();
}
if (val==123){
for (i=1;i<=18;i++){
if(myPort.available()>0){
atai[i]=myPort.read()-48;}
}
print(",x=");
x_dat[1]=atai[1];
x_dat[2]=atai[2]*10000+atai[3]*1000+atai[4]*100+atai[5]*10+atai[6]-20000;
x=int(x_dat[2]);
print(x);
print(",y=");
y_dat[1]=atai[7];
y_dat[2]=atai[8]*10000+atai[9]*1000+atai[10]*100+atai[11]*10+atai[12]-20000;
y=int(y_dat[2]);
print(y);
print(",z=");
z_dat[1]=atai[13];
z_dat[2]=atai[14]*10000+atai[15]*1000+atai[16]*100+atai[17]*10+atai[18]-20000;
z=int(z_dat[2]);
println(z);
cg_x[cnt]=x;
cg_y[cnt]=y;
cg_z[cnt]=z;
}
}

for(i=0;i<100;i++){
if ((cg_x[i]<200)&(cg_y[i]<200)&(cg_z[i]<200)){
fill(10,100,100);
translate(cg_x[i],cg_y[i],cg_z[i]);
sphere(11);
} else {
fill(10,100,100);
translate(0,0,0);
sphere(9); }
}

}

« ArduinoとProcessing その1 | Main | コードを書きたいか? »

Comments

Post a comment

Comments are moderated, and will not appear on this weblog until the author has approved them.

(Not displayed with comment.)

TrackBack


Listed below are links to weblogs that reference ArduinoとProcessing その2:

« ArduinoとProcessing その1 | Main | コードを書きたいか? »

May 2021
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Recent Trackbacks

Categories

  • つぶやき
  • コラム
  • スポーツ
  • トピック
  • ニュース
  • パソコン・インターネット
  • 日記・コラム・つぶやき
  • 書籍・雑誌
無料ブログはココログ