読者です 読者をやめる 読者になる 読者になる

Arduino-processing シリアル通信にて連携させる

電子工作 processing

・目的

 Arduinoで所得したデータをシリアル通信でprocessingに送りグラフを表示。

 

 

・使用したもの

 Arduino uno

   ブレッドボード

 ジャンパワイヤー

 可変抵抗

   processing 3.2.1

 

・方法

 

(1)回路

   図1のように組む。

f:id:shangtian:20170302134453p:plain

図1:可変抵抗

 

(2)Arduino側のプログラム

アナログピン0から値を読み取るので0ピンを読み取るようにセット

読み取った値をvalに代入

int val = analogRead(0);

以下にてシリアル通信で値を送る

  Serial.write(val);
今回使ったコードを図2に示した
void setup() {

 Serial.begin(115200);
}

void loop() {
  
  int val = analogRead(0);
  
  Serial.write(val);
  delay(100);
 

}

 図2:Arduino

 

(3)processing側のプログラム

Arduinoが接続しているポートアドレスを入力する

今回はCOM3だったので、そう記入した。

myPort = new Serial(this,"COM3",115200);
import processing.serial.*;

Serial myPort;
float x;
int y;
void setup() {
  background(255);
  size(800,500);
  
  myPort = new Serial(this,"COM3",115200);
  y = 500;
}

void draw() {
 
  x+=0.1;
  noStroke();
  fill(#F7114F);
  ellipse(x,500-y,10,10);
  if(x>width){
    x = 0;
    background(255);
  }
}

void serialEvent(Serial myPort){
  y = myPort.read();
}

 図3:processing側

 

(4)実行

Arduino unoをパソコンに接続し、(3)で作ったprocessingを起動させる。

可変抵抗のつまみを回しグラフの変化を観察する。

 

 

・結果

  Arduinoとprocessing間での通信は一応成功した。しかし可変抵抗を回し

 ていくと、途中で値がゼロに飛んでしまう。またグラフも滑らかではなく

 速く可変抵抗のツマミを回すとグラフが線でなく点になってしまった。


arduino-processing シリアル通信 円

 

・考察

  • グラフの値がゼロに飛ぶ理由について

まず、可変抵抗の値をうまく読み取れていない可能性を考慮し、

シリアル通信にて取得データを確認した。取得したデータは0~1023

であり正常であった。よって、問題はprocessing側有る可能性が出てきた。

 

次にprocessing側がシリアル通信にて取得したデータを確認するため

以下のプログラムを実行した。

import processing.serial.*;

Serial myPort;

int x;

void setup(){
  
  size(1000,1000);
  
  myPort = new Serial(this, "COM3",115200);
}

void draw() {
  background(255);
  
  ellipse(width/2,height/2,x,x);
  textSize(16);
  println(str(x));//下のバーに値を表示
}

void serialEvent(Serial myPort){
  x = myPort.read();
  
}

結果は0~255までしか表示されておらず、受け取った値が255を

超えると0にジャンプする


processing シリアル通信テスト

 

以上の結果からシリアル通信が問題だと考えられる。

 

Arduinoで使われるint型は2バイトシリアル通信では1バイトずつ

データを送るので、ここを処理しないとうまく表示できないことが

分かる。

 

 

<参考文献>

http://d.hatena.ne.jp/kougaku-navi/20141008/p1

【ドスパラWeb】