Arduino-processing シリアル通信により連携させる その3

・目的

 複数のセンサーの値をarduino側で読み取りシリアル通信にてデータをprocessing側に送信する。Processing が受け取った値に対応して立方体の大きさと回転速度を変化するようにプログラムを組む。

 

 

・使用したもの

 可変抵抗(10KΩ)2個

 

小型 ボリューム 可変 抵抗器 10K Ω B 10 個 セット

小型 ボリューム 可変 抵抗器 10K Ω B 10 個 セット

 

 

    Arduino uno

    Processing IDE

   ノートPC(Windows 10

 ブレッドボード

 ジャンパワイヤ

 

・方法

 

 (1)回路を組む

可変抵抗を2個使い、任意の可変抵抗をアナログピンA4に、

残りの可変抵抗をアナログピンA5に接続した。可変抵抗の

VCCピンをブレッドボードの+に、GNDをブレッドボードの

マイナスに接続した。回路図を図1に示した。

f:id:shangtian:20170321220819p:plain

図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

お名前.com

 

 

shangtian.hatenablog.com

shangtian.hatenablog.com