11月3日にリリースされたArduino IDE 1.6.6のシリアルプロッタ機能がとても便利。「こういうのが欲しかった!」と膝を打ちました。まだどういうものなのか把握していない方のために、この機能に絞って説明しますね。
従来のシリアルモニタはArduinoボードからの文字情報を表示するものでした。連続的に送られてくるセンサなどのデータを吟味するときは、動体視力に頼るか、上下にスクロールして値を探す必要がありました。
1.6.6で追加されたシリアルプロッタは、送られてきた数値をリアルタイムにグラフ表示してくれます。IDEのメニューから選ぶだけですぐに描き始めてくれる。Arduino側のプログラムは単純に数値をSerial.println(シリアル通信で改行付きの送信)するだけでOK。値の範囲(Y軸)はあまり気にしなくても大丈夫。シリアルプロッタが自動的にウインドウの幅に合わせてY軸の範囲を調整してくれます。
横方向(X軸)は500カウントまで表示でき、それを超えると左方向へなめらかにスクロールしていきます。ここで言う500カウントは、printlnした回数と考えてください。1回printlnすると、グラフが1目盛り右に伸びる。Arduinoが出力をやめると、グラフも止まります。
上のグラフは、アナログ入力端子に可変抵抗器をつないでツマミをグリグリしたもの。スケッチはこんな感じ。
void setup() { Serial.begin(9600); while (!Serial); } void loop() { int val = analogRead(A0); Serial.println (val); delay(50); }
delayを小さくすると、グラフの横移動が速くなります。高速に表示するときは、シリアルポートのスピード(上の例では9600)をもっと大きくしたほうがいいかもしれません。51200とか。
printlnできる数値ならば、アナログ入力以外のデータであっても描画可能です。このグラフはrandom関数の出力(疑似乱数)をプロットしたもの。ウインドウを横に伸ばすとグラフも伸びます。データ数は500個のまま。
これまで、Arduinoの出力をグラフにしたいときは、Processingやgnuplotを使って小さいプログラムを書いてました。その手間が省けるのはとてもうれしい。溜まってるセンサのテストをしたくなりましたね。