Arduinoのシリアル入力から文字列を受け取りたい。
シリアルの入力を受け取るにはSerial.read()
を使えばいいのでが、このメソッドは1バイト分の入力を受け取るのみである。よって文字列を受け取るにはいくかの考慮が必要になる。
- 取得可能なデータがあるかぎり、取得を繰り返す
- 取得したデータを配列に格納する
- 終端文字を追加した上で文字列に格納する
なんというか、まとめてやってくれるライブラリが存在する気がしてならないけれど、書いたのでメモ。
訂正: こんな面倒な事しないでもReadStringで一発でした。
String label = "Tick";
char buffer[33];
void setup() {
Serial.begin(9600);
}
void loop() {
int index = 0;
bool hasData = false;
//入力された文字列の取得を試みる
while (Serial.available() > 0) {
hasData = true;
buffer[index] = Serial.read();
index++;
//バッファ以上の場合は中断
if (index >= 32) {
break;
}
}
//終端文字を足す
buffer[index] = "\0";
//バッファがある場合は文字列を更新して、終端以降を除去
if (hasData == true) {
label = buffer;
label.trim();
}
delay(500);
Serial.println(label);
}