Arduino:
コマンドライン引数の読み取り
How to: (方法)
Arduino環境ではコマンドライン引数は直接扱えないけど、シリアル通信を使って似たことができるよ。下はその例。
void setup() {
Serial.begin(9600); // シリアル通信の開始
}
void loop() {
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n'); // 改行までの文字列を読み取り
if (command == "LED_ON") {
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
Serial.println("LED is ON");
} else if (command == "LED_OFF") {
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
Serial.println("LED is OFF");
} else {
Serial.println("Unknown Command"); // 不明なコマンド
}
}
}
サンプル出力:
LED is ON
LED is OFF
Unknown Command
Deep Dive (詳細情報)
Arduinoはマイクロコントローラーで基本的にコマンドライン引数を取り扱わない。でも、シリアル通信をつかってPCや別のデバイスから指示を受け取れる。歴史的背景? UNIXやDOS時代からコマンドライン引数はあるよ。代替方法? もちろん、BluetoothやWiFiを使ってデータを受け取る事も可能。実装の詳細? Serial.readStringUntil()はタイムアウトも設定できるし、細かい挙動を調整できるよ。
See Also (参考資料)
- Arduino公式サイトシリアル通信チュートリアル: Arduino - Serial
- シリアル通信の基礎知識: Serial communication basics
- Arduino Forum: Arduino Forum