Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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付近をウロチョロするデータを一緒に書くと直線にしか見えないとか・・・)、簡単にセンサーの値を確認することができたりしますので是非活用してはいかがでしょうか。

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

azusa9
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away