シリアル通信とシリアルモニターの利用

シリアル通信は Arduino ボードとコンピュータやその他のデバイスと通信するために使われます。

すべての Arduino ボードは少なくともひとつのシリアルポートを備えています。

Arduino の開発環境では、シリアル通信に利用するプログラミングインターフェイスとして Serial オブジェクトが利用できます。

これはシリアル通信のためのバッファやメソッドをまとめた、 HardwareSerial クラスのオブジェクトです。

シリアルモニター

Arduino 開発環境では、シリアルポートの入出力の確認を簡単に行うためのシリアルモニター (Serial Monitor) というツールが用意されています。

開発環境の Tool » Serial Monitor メニューから起動します。

Arduino シリアルモニター

シリアルモニターの画面は次のようになります。

Arduino シリアルモニター

ポートに書き込むには、文字を入力して Send ボタンを押します。

シリアルポートに文字を出力

さっそくシリアルポートに文字を出力して、それを表示してみましょう。

スケッチは次の通り。

void setup() {
  Serial.begin( 9600 );
}

void loop() {

  if( Serial.available() ){
    char c = Serial.read();
    Serial.print( c );
    Serial.print( " " );
    Serial.println( c , HEX );  
  }

}

setup() で Serial の begin メソッドでシリアル通信のボーレート (1秒間の転送ビット数) を設定。 loop() にて Serial の println メソッドでデータを印字。そのあと 10秒の delay します。

ちなみに print メソッドも印字しますが、println は CRLF を最後に出力します。

シリアルモニターを開いてから Arduino IDE から Arduino ボードにアップロードしましょう。

Arduino シリアルモニター

アップロード後、直ちにシリアルモニターに文字が出力されていることが確認できるはずです。

Arduino シリアルモニター

読み込みと出力

次の例ではシリアルポートから文字を1バイト毎に読み取り、それを可読な ASCII 文字としてシリアルポートに出力します。

スケッチは次の通りです。

void setup() {
  Serial.begin( 9600 );
}

void loop() {

  if( Serial.available() ){
    char c = Serial.read();
    Serial.print( c );
    Serial.print( " " );
    Serial.println( c , HEX );  
  }

}

これを実行すると、次のようになります。

シリアルモニターの入力フィールドに "Hello" と入力して、"Send" をクリック。

すると次のように出力されます。

Serial.available() メソッドはバッファにデータがあるときに読み込み可能なバイト数を返します。データがない場合は 0 を返します。 ブロックはしません。

Serial.read() メソッドはバッファの先頭のバイトを読み取り返します。読み取りできるデータがない場合は、ブロックせずに -1 を返します。

Serial.print() メソッド及び Serial.println() メソッドは第二引数に書式を受け取ります。2/8/10/16進数として出力するには BIN, OCT, DEC, HEX を それぞれ指定します。浮動小数点の値に対して、書式を整数を指定すると小数点の場所を指定できます。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 基礎からの IoT 入門