Arduino-processing シリアル通信により連携させる 改良版

スポンサーリンク

目的

 前回の実験ではArduino側で読み取った値をうまくprocessing側に表示

 できなかった。ここの改善を図る。

 

方法

      (1)arduino側プログラム

    Arduino側のint型は2バイトで0~1023を表示可能だが

    シリアル通信によって送ることが可能なデータ量は1バイトで

    0~255となるため、Arduino側でシリアル通信で送る値を

    map関数によって変更した。図1にプログラムコードを記載した。

void setup() {

 Serial.begin(115200);
}

void loop() {
  
  int val =map( analogRead(0),0,1023,0,255);
  
  Serial.write(val);
  
 

}

 

図1:Arduino側プログラム

 

 (2) Proessing側プログラム

    こちらのコードは変更を加えていない。Processingの

   プログラムコードは図2に示した。

 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.5;
  noStroke();
  fill(#F7114F);
  ellipse(x,500-y,10,10);
  if(x>width){
    x = 0;
    background(255);
  }
}

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

 

    図2:Processing側プログラム

 

>espressif ESP-WROOM-02 Wi-Fiモジュール

価格:864円
(2017/3/21 07:12時点)

結果

値がジャンプすることなくproessing側で表示することが出来た。


Arduino-processing 改良

 

 

 

www.shangtian.tokyo

 

考察

まだprocessing側で表示できるのはArduino側のセンサー1個

のみのデータである。複数のセンサーの値を表示するには

配列と繰り返しの工夫を加をすれば可能ではないか。