この間よくわからないまま使っていたProcessingですが、Ene-1GPのモニターに使えそうだということで使えるようになろうと思います。今回はその時使ったプログラムの解読です。
まず、Arduinoで毎回センサーのデータをとるのはめんどくさいので、数秒おきに1~4をシリアル出力しておきます。
前回使ったプログラムは以下の通りです。
コメントに解説を追加しておきます。
import processing.serial.*; //宣言?
//下三行が定義
まず、Arduinoで毎回センサーのデータをとるのはめんどくさいので、数秒おきに1~4をシリアル出力しておきます。
前回使ったプログラムは以下の通りです。
コメントに解説を追加しておきます。
import processing.serial.*; //宣言?
//下三行が定義
Serial port;
int val;
int x, y, dx, dy, c;
void setup() {
size(800, 600); //画面サイズ
String arduinoPort = Serial.list()[1]; //シリアルポートの番号
port = new Serial(this, arduinoPort, 19200); //ポートの設定
background(0); //背景を黒に設定
}
void draw() {
val = 0;
if ( port.available() > 0) {
val = port.read(); //ポートの値を読む
print(char(val)); //Processingのコンソールに読んだ文字を表示
if (char(val) == '2') {
x = -800; //表示する図形の左上の点の初期位置のx座標
y = 0; //同y座標
dx = 50; //xの変化量
dy = 0; //yの変化量
c = 16; //出てくるまでのコマ数
fill(255, 255, 0); //表示する図形の色
} else if (char(val) == '1') { //以下繰り返し
x = 800;
y = 0;
dx = -50;
dy = 0;
c = 16;
fill(0, 0, 255);
} else if (char(val) == '4') {
x = 0;
y = -600;
dx = 0;
dy = 40;
c = 15;
fill(255, 0, 0);
} else if (char(val) == '3') {
x = 0;
y = 600;
dx = 0;
dy = -40;
c = 15;
fill(0, 255, 0);
}
}
if (c-- > 0) { //更新処理
x = x + dx; //x座標の変換
y = y + dy; //y座標の変換
rect(x, y, 800, 600); //(x,y)の座標から800*600の長方形を表示
}
}
このようになります。Javaはわからないので間違っていたらごめんなさい。
今回はここまでです。ちょっとProcessingに浮気していろいろ作ってみたいと思います。それではまた今度。
このようになります。Javaはわからないので間違っていたらごめんなさい。
今回はここまでです。ちょっとProcessingに浮気していろいろ作ってみたいと思います。それではまた今度。