・目的
複数のセンサーの値をarduino側で読み取りシリアル通信にてデータをprocessing側に送信する。Processing が受け取った値に対応して立方体の大きさと回転速度を変化するようにプログラムを組む。
・使用したもの
可変抵抗(10KΩ)2個
Arduino uno
Processing IDE
ノートPC(Windows 10)
ブレッドボード
ジャンパワイヤ
・方法
(1)回路を組む
可変抵抗を2個使い、任意の可変抵抗をアナログピンA4に、
残りの可変抵抗をアナログピンA5に接続した。可変抵抗の
VCCピンをブレッドボードの+に、GNDをブレッドボードの
マイナスに接続した。回路図を図1に示した。
図1:回路図
(2)Arduino側のプログラム
int sensors[2];
int inByte;
void setup() {
Serial.begin(9600);
sensors[0] = 0;
sensors[1] = 0;
inByte = 0;
establishContact();
}
void loop() {
if(Serial.available() > 0){
inByte = Serial.read();
sensors[0] = analogRead(A0);
sensors[1] = analogRead(A1);
Serial.print(sensors[0]);
Serial.print(",");
Serial.println(sensors[1]);
}
}
void establishContact() {
while(Serial.available() <= 0) {
Serial.println("0,0");
delay(300);
}
}
.
(3)processing側のプログラム
import processing.serial.*;
Serial myPort;
float i;
float j;
void setup() {
size(800,800,P3D);
myPort = new Serial(this,"COM3",9600);
myPort.bufferUntil('\n');
}
void draw() {
background(0);
translate(width/2,height/2);
fill(#E4FA03);
rotateY(frameCount/i);
rotateX(frameCount/i);
box(j);
}
void serialEvent(Serial myPort){
String myString = myPort.readStringUntil('\n');
myString = trim(myString);
int sensors[] = int(split(myString, ','));
if (sensors.length > 1) {
//0~1023を0~255に変換
i = map(sensors[0],0,1023,0,255);
j = map(sensors[1],0,1023,0,255);
}
myPort.write("A");
}
.
・結果
accept arduino date by serial 3 2017 03 21 9 04 05