33
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ArduinoIDEのシリアルプロッタで2個以上のデータを表示させる

Last updated at Posted at 2016-11-01

ArduinoIDEのシリアルプロッタってご存じですか?

Arduino 1.6.6 あたりでつかされた機能だそうで、数字をシリアルで流すと、そのグラフを書いてくれる機能です。グラフのスケールもある程度自動的に変更してくれるので、とりあえずセンサーで計測した数字をリアルタイムに見たいって時にとても便利!

こんな感じにグラフが表示されます。
シリアルプロット1つ.png

1個のデータのグラフを書く方法

簡単でシリアル通信で「数字(改行)」を送るだけです。たとえばこんなスケッチです。
このスケッチで、先のグラフを描いています。

serial-plot1.ino
double angle = 0;

void setup() {
  Serial.begin(250000);
}

void loop() {
  angle++;
  Serial.print(sin(angle / 180 * PI));
  Serial.println("");
  delay(50);
}

Arduino UNOに書き込んで、「ツール」→「シリアルプロッタ」を選択します。
serialプロッタ.png

シリアルプロット1つ.png

2個のデータのグラフを書く方法

serial-plot2.ino
double angle = 0;

void setup() {
  Serial.begin(250000);
}

void loop() {
  angle++;
  Serial.print(sin(angle / 180 * PI));
  Serial.print(",");
  Serial.print(sin(angle + 30 / 180 * PI));
  Serial.println("");
  delay(50);
}

こんな感じで、カンマ区切りでデータを送信すると・・・
シリアルプロット2つ.png

2つのグラフが同時に書けます。
右上にある凡例?は左から順に色が割り振られています。
第1項目:青
第2項目:オレンジ

もうおわかりでしょうが、3個のデータのグラフを書く方法

serial-plot3.ino
double angle = 0;

void setup() {
  Serial.begin(250000);
}

void loop() {
  angle++;
  Serial.print(sin(angle / 180 * PI));
  Serial.print(",");
  Serial.print(sin(angle + 30 / 180 * PI));
  Serial.print(",");
  Serial.print(2 * cos(angle  / 180 * PI));
  Serial.println("");
  delay(50);
}

シリアルプロット3つ.png

こんな感じで、3つめの項目が赤色でプロットされています。

Y軸のスケールが一つしかないことに注意が必要ですが(1万付近をウロチョロするデータと、0付近をウロチョロするデータを一緒に書くと直線にしか見えないとか・・・)、簡単にセンサーの値を確認することができたりしますので是非活用してはいかがでしょうか。

最後まで読んでいただき、ありがとうございました。

33
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?