14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduinoのシリアル入力から文字列を読み取る

Last updated at Posted at 2017-07-16

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);
}
14
12
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?