このプログラムを使うと、パソコンにつないだ Arduino のピンをグラフィカルに操作できます。またピンの入出力をグラフ表示します。
あらかじめArduino に通信するためのスケッチを書き込んでおきます。
まず、ダウンロードしたファイル中にあるiArduinoディレクトリ(フォルダ)をArduinoディレクトリ(デフォルトではマイドキュメントの中にある)の中のlibrariesフォルダにコピーします。 Arduino IDEで、スケッチの例(Examples)の中にできたiArduinoもしくは、iArduino→ArduinoTerminalの中のいずれかのスケッチをアップロードします。
スケッチを書き込んだArduinoとPCをつなぎ、ArduinoMonitorを起動します。右上のプルダウンメニューからArduinoのつながっているシリアルポートを選び、Connectをクリックします。うまくArduinoと通信できるとピンの状態がウィンドウに表示されます。上のようにスケッチを書き込んだ初期状態では、13ピン(LEDピン)をのぞく、すべてのピンはデジタル入力又はアナログ入力となっています。
Arduinoとの通信を切るにはDisconnectボタン(Connectボタンの表示が変わる)をクリックします。プログラムの終了はウィンドウ右上の×ボタンをクリックします。
ピンの役割をプルダウンメニューから選んでください。DINはデジタル入力、AINはアナログ入力です。デジタル出力(DOUT)にするとラジオボタンが表示されます。LOW/HIGHをクリックすると出力がLOW/HIGHになります。アナログ出力(PWM)、ラジコンサーボ(RC)ではスライダーが表示されます。スライダーを操作すると出力が変化します。
左上のshow in voltageにチェックを入れると、アナログ入力の表示単位を電圧にします。アナログ入力の参照電圧(多くの場合は電源電圧)は、その下のテキストボックスに入力しておきます。デフォルトでは5[V]です。
CSV 形式で値を記録できます。Start Logボタンをクリックし、保存するファイルを指定します。追加ではなく上書きするので注意してください。サンプリング周期は約0.1秒です。終了は同じボタン(表示はStop Log)をクリックします。
Graphボタンをクリックするとグラフでピンの値の変化を表示するウィンドウを表示します。青い線が下限(0)、赤い線が上限(デジタルの場合は1、アナログ入力の場合は1023、PWM(アナログ)出力の場合は255、ラジコンサーボの場合は180)です。
グラフウィンドウの、Stopボタンはグラフの更新を止めます。Clearボタンはグラフを書き直します。Save PNGボタンはPNG形式の画像ファイルとしてグラフを保存します。Save CSVボタンはCSV形式で数値を保存します。Closeボタンはグラフウィンドウを閉じます。サンプリング周期は約0.1秒です。
Saveボタンで現在の設定をXML形式で保存し、Loadボタンで読み込みます。保存、読み込みをするファイルは、ボタンのすぐ上にあるテキストボックスで指定したファイルです。ファイルが指定されているときにダイアログは出ないことに注意してください。ダイアログを表示するにはテキストボックスをダブルクリックします。
右下のShow codeをクリックすると、現在のピンの状態に初期化するための、Arduino IDE 用のソースコードが表示されます。Saveボタンをクリックすると、ファイルに保存できます。閉じるにはCloseボタンをクリックします。
バージョン0.2からは自分のスケッチを動かしながらピンの様子を見ることが出来るようになっています。スケッチの例(Examples)にある、iArduino→ArduinoTerminal→BareMinimumを開くと下のようになっています。この例が最小のスケッチになります。setup関数とloop関数の// put your code here と書かれているところよりも下に、自分のプログラムを書きます。debug.check()関数で通信をしているので、loop関数の中で長いdelay関数を使うと、その間はピンの様子を見ることが出来ないので、注意して下さい。
#include <EEPROM.h> // include EEPROM.h even if you don't need it #include <Servo.h> // include Servo.h even if you don't need it #include <iArduino.h> // include library header iArduinoHandleProtocol debug; // declare iArduinoHandleProtocol void setup() { debug.begin(); // initialize iArduinoHandleProtocol // Serial port is initialized at // 115.2kbps. // put your setup code here, to run once: } void loop() { debug.check(); // call this function periodically // put your main code here, to run repeatedly: }
もう一つ例を見てみます。02.DigitalにあるBlinkWithoutDelayという例を基にしたものです。 13ピンのLEDを点滅させるのと、シリアルからHIGH/LOWのテキストをPCへ送ります。またPCから1を送ると、"Recieved 1."をArduinoが返します。ArduinoMonitorの左上のテキストボックスで通信の送受信ができます。
Serial.println()などArduinoからPCへ文字を送ることは、いつもと変わりなくできます。 Serial.available(), Serial.read()は使えないので、代わりにdebug.available(), debug.read()を使います。シリアルポートを使う場合には、0x7fをPCからもArduinoからも送らないで下さい(0x7fでArduinoTerminalとの通信かどうかを判別しているので動作がおかしくなります)。
スケッチが完成してArduinoTerminalを使わないときにも、スケッチはそのままでも構いません。
/* This sketch shows an example use of iArduinoTerminal for debugging without using iArduino language. The sketch extends Blink without Delay in the example. */ #include <EEPROM.h> // include EEPROM.h even if you don't need it #include <Servo.h> // include Servo.h even if you don't need it #include <iArduino.h> // include library header iArduinoHandleProtocol debug; // declare iArduinoHandleProtocol const int ledPin = 13; int ledState = LOW; long previousMillis = 0; long interval = 1000; void setup() { debug.begin(); // Setup, serial port is initialized. // The baudrate is 115.2kbps. pinMode(ledPin, OUTPUT); } void loop() { debug.check(); // Periodiclly call this function unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (ledState == LOW) { ledState = HIGH; Serial.println("HIGH"); // You can use Serial.flush, print, println, and write // as usual. } else { ledState = LOW; Serial.println("LOW"); } digitalWrite(ledPin, ledState); } if (debug.available()) { // Use available() of iArduinoHandleProtcol instead of // Serial.available() int c = debug.read(); // Use read() of iArduinoHandleProtcol instead of // Serial.read(); if (c == '1') Serial.println("Recieved 1."); } }