【Arduino IDE】シリアルプロッタの使い方

目次

はじめに

シリアルプロッタとは?

シリアルプロッタとは、Arduinoで測定したセンサーデータなどの数値データを、次のようなグラフで表示する機能です。

超音波距離センサーで測定した距離を表示している様子

前提

Arduino IDEの「シリアルモニタ」の使い方をご存知の方を対象としています。(Serial.beginSerial.printlnの使い方など)

シリアルモニタの知識を確認したい方は、次の記事をご覧いただければと思います。

説明内容

この記事では、シリアルプロッタの基本的な使い方や、次のような凡例を表示する方法、複数のデータを同時に表示する方法などを解説します。

基本的な使い方

最初に、グラフを表示するための基本を解説します。

シリアルプロッタウィンドウ表示方法

シリアルプロッタのウィンドウを表示するには、Arduinoボードを接続した状態でArduino IDEの右上の「シリアルプロッタ」アイコンをクリックします。

なお、Arduinoボードを接続していない状態や、次のようにArduinoボードを選択していない状態では、シリアルプロッタウィンドウは表示できないことに注意してください。

数値データは1行1データで表示する

シリアルプロッタに表示するデータは、次のようにシリアルモニタ上で1行1データで表示するようにします。

スケッチでは次のように書くとこのような表示ができますね。

loop() {
  // ここで、例えば距離センサーで測定した値を distance 変数に代入する
  
  Serial.println(distance);  // シリアルモニタに改行しながら表示
  delay(500);  // 時間待ち
}

このように数値データをシリアルに表示すると、シリアルプロッタでは1行ずつ(1データずつ)グラフ化されます。

数値は行の先頭に表示する

シリアルプロッタ表示されるデータは、シリアルモニタの「行先頭の数値」です。そのため、次のように数値データのあとに文字などを書いても問題ありません。

上のようにデータの単位を書いておくとシリアルモニタでもわかりやすくなりますね。

なお、数値とそのあとの文字の間はスペースやタブなどが必要です。

スケッチでは次のように書けばOKです!

loop() {
  // ここで、例えば距離センサーで測定した値を distance 変数に代入する
  
  Serial.print(distance);  // 行先頭に数値データを表示(改行しない)
  Serial.println(" cm");   // 数値のあとにスペースを入れて文字を表示(改行する)
  delay(500);  // 時間待ち
}

シリアルプロッタに表示されるデータは行先頭の数値ですので、次のように行の先頭が文字の場合はシリアルプロッタに表示されなくなりますので注意してください。

ただし、例外がありますので次のセクションで説明します。

凡例の表示方法

通常、シリアルプロッタに表示される判例は、次のように「Value 1」などの一般的な名称になっています。

この凡例の文字列は変更できるようになっています。

変更する場合、次の左側のようにデータ名:数値というフォーマットでシリアルモニタに表示するようにします。:の前後にはスペースかないことに注意してください。

例えば、上の右側のようにシリアルモニタに表示するようにすると、シリアルプロッタには次のように表示されます。

スケッチには次のように書けばOKです!

loop() {
  // ここで、例えば距離センサーで測定した値を distance 変数に代入する
  
  Serial.print("距離(cm):");  // 凡例名を表示(改行しない)
  Serial.println(distance);  // 凡例名の後に数値データを表示(改行する)
  delay(500);  // 時間待ち
}

複数データの表示

複数データ表示の基本

例えば、Arduinoと温湿度センサーで気温と湿度を測定して、そのデータを確認したいケースを想定します。

この場合、データは2つありますので、シリアルプロッタにも2つのデータを同時に表示したいですよね。

このような場合は、次のようにシリアルモニタに1行に1つのデータを,(カンマ)などで区切って表示するようにします。

なお、データの区切りは、,(カンマ)、半角スペース、タブが使用できます。

上のようにデータを表示すると、次のようにシリアルプロッタ上に2つのデータが同時に表示されます。

複数データで凡例を表示する

上の例では2つのデータを表示していますが、判例がないためにどちらがどのデータなのかわかりづらい状態になっています。

このような場合は凡例を表示するとわかりやすくなります。

凡例の表示は先ほどのやり方と同じように1つのデータをデータ名:数値という表示にして、それらをカンマなどで区切ればOKです。

このような表示にすると、次のように凡例が表示されます。

スケッチでは次のように書けばOKです!

loop() {
  // ここで温湿度を測定し、temperatre=気温、humidity=湿度とする

  Serial.print("温度(ºC):");
  Serial.print(t,1);

  Serial.print(", 湿度(%):");
  Serial.println(h,1);

  delay(2000);
}

活用のコツ

シリアルプロッタは、縦軸が数値データに合わせて自動調整されます。

例えば、次のように数値変化が小さい場合、シリアルプロッタではこのように表示されません。

数値変化が小さいデータが続く場合、上のような表示ではなく、次のように縦軸が自動調整されて変化がわかりやすくなるように拡大されます。

リアルタイムでこのような変化がある場合、全体の変化がわかりづらくなことがあります。

Arduino IDE Version2では縦軸を固定する設定はありませんが、擬似的に固定する方法をご紹介します。


ちょっとベタな方法ですが、データを表示するときに最小値と最大値も一緒に表示する、という方法です。

このようにシリアルモニタに表示すると、次のようにシリアルプロッタに常に最小値と最大値も表示されるため、表示データの変動範囲によらず、最小値と最大値で固定されます。

ただし!

表示データが最小値と最大値の範囲を超えてしまうと、縦軸はそれに合わせて自動調整されてしまいますので注意が必要です。(なんちゃって縦軸固定という感じです)


ところで、最小値を0、最大値を35とした場合、シリアルプロッタの縦軸は、次の図の左側のように−5から40までとなります。

これは、0と35を含む必要があるため、最小値と最大値それぞれ1目盛分多く縦軸が表示される仕様のようです。

そこで、最小値と最大値を指定する場合、上の図の右側のように最小値を少し大きく、最大値を少し小さくすると縦軸をうまく調整できます。

変更履歴

日付内容
2025.5.30新規投稿
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次