こんにちは!こんばんは!
ちゃとらです(・ω・)/
「そういえばArduinoにシリアルプロッタあるやん!ちょっと遊んでみよ!」
「おぉーええやん!面白いなぁ~気に入ったわ!」みたいな感じでシリアルプロッタいじってました(笑)
なので、今回は使用例も含めたシリアルプロッタについて解説していきます!
知っておくと意外と便利かも⁉
シリアルプロッタの使い方
手順
- プログラムコードを作成
- Arduinoにプログラムコードを書き込む
- Arduino IDEの画面上部のメニューから「ツール」→「シリアルプロッタ」を選択
こんな感じの簡単な手順でシリアルプロッタを表示させることができます。
Arduinoにコードを書き込んで動かすので、当然ですがArduinoを接続しないと動きません!(コードの検証はできます)
ちなみに、シリアルプロッタはCtrl+Shift+Lのショートカットキーでも表示させることができます。
1つの値を表示させる
まずは、1つの値を一次関数のように表示させてみます。
int x = 0;
void setup()
{
Serial.begin(9600); // 9600bpsでシリアル通信する
}
void loop()
{
Serial.println(x); // xの値を送信
x += 2;
}

5行目でシリアル通信する速度を設定しています。とりあえず9600bpsにしておけばOKです。
9600bpsは9600(ビット/秒)、つまり1秒間に9600ビットの速さということです。
10行目でデータを送信しています。
データ+改行をすることで逐一送信した値をグラフ化してくれます。
10行目を[Serial.print(x); Serial.print(“\n”);]
と書いてもグラフ化してくれますよ。
複数の値を表示させる
次は、2つの値を表示させてみます。先ほどとは少し異なります。
ある値になると増減が変化する一次関数と二次関数をグラフ化してみました。
int x = 0; // 表示させる値その1
int y = (x * x) / 50; // 表示させる値その2
int change = 0; // xの値を切り替える役割
void setup()
{
Serial.begin(9600);
}
void loop()
{
// xの値が100になったら右肩下がりにし
// 0になったら右肩上がりにする
if(x == 100) change = 1;
else if(x == 0) change = 0;
if(change == 0) x++;
else x--;
Serial.print(x);
Serial.print(",");
Serial.println(y);
y = (x * x) / 50;
}

ポイントは20行目~22行目です。
2つ以上の値をグラフ化するには値と値の間に[,(コンマ)]を入れる必要があります。
つまり、複数の値をグラフ化するときは[値1,値2,値3,…改行]と送信することで各値をグラフ化してくれます。
凡例を表示させる
凡例って何だよ!
そんな方は↓を見て、どうぞ。

それでは、先ほどのグラフに凡例を付けて表示させてみます。
int x = 0; // 表示させる値その1
int y = (x * x) / 50; // 表示させる値その2
int change = 0; // xの値を切り替える役割
void setup()
{
Serial.begin(9600);
}
void loop()
{
// xの値が100になったら右肩下がりにし
// 0になったら右肩上がりにする
if(x == 100) change = 1;
else if(x == 0) change = 0;
if(change == 0) x++;
else x--;
Serial.print("x:");
Serial.print(x);
Serial.print(",");
Serial.print("y:");
Serial.println(y);
y = (x * x) / 50;
}

20行目~24行目に注目してください。
凡例を表示させるには、xの前に[“x:”]、yの前に[“y:”]を入れる必要があります。
なので、凡例を表示させるには各値の前に”○○:”という文字列を送信することで凡例をも表示してくれるようになります。
他のやり方としては、表示させる値を含めた文字列をString型にまとめてから送信する方法などがあります。
応用例
ただ自分で作成したコードの数値をグラフ化しても面白くないので、ある回路から何かを読み取ってグラフ化してみます。
コンデンサを用いた回路の2つの電圧を読み取ってグラフ表示させてみます!


簡単に説明すると、ボタン押下前ではV1=5V,V2=0で押下中はV1=V2かつV2の値が増加しいずれは一定になります(ボタンを離すとまたV1=5V,V2=0に戻っていく)
スイッチはスライドスイッチやトグルスイッチなどでもOKです。
コンデンサは220μFなどのそこそこ大きいものがいいかと思います。
void setup()
{
Serial.begin(9600);
}
void loop()
{
// 各アナログピンから読み取った値を0~5V範囲内の値に変更する
double V1 = analogRead(A1);
V1 = V1 / 1024.0 * 5.0;
double V2 = analogRead(A2);
V2 = V2 / 1024.0 * 5.0;
Serial.print("V1:");
Serial.print(V1);
Serial.print(",");
Serial.print("V2:");
Serial.println(V2);
}

こんな感じで電圧測定することができます。
他の回路に応用すれば、電圧だけでなく様々なセンサの値などもグラフ化することができますよ!
ぜひ色々な回路で試してみてください!
マルチバイブレータ回路の電圧測定なんか面白そうですね!
まとめ
グラフ表示、意外と面白いよ!
今回はここまでです。
ちゃとら(・ω・)/