Arduino入門:シリアル通信

Arduinoでシリアル通信を行う方法について解説します。

Serial.begin

Serial.beginで、シリアル通信のデータ転送レートをBaud Rate(bps)を指定します。bpsはビット/秒で、PCと通信する際は、次のレートから1つを選びます。
300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200

なお、他の転送レートを必要とするコンポーネントをピン0と1につないで使う場合、上記以外の値を指定することも可能です。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.begin()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上のExample-1では、9600bpsでポートを開いています。次のExample-2は、Arduino Megaの例で、4つのシリアルポート(Serial, Serial1, Serial2, Serial3)を異なる転送レートで初期化しています。

Serial.end

Serial.endは、シリアル通信を終了します。RXとTXを汎用の入出力ピンとして使えるようにします。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.end()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

Serial.available

Serial.availableは、シリアルポートに何バイトのデータが到着しているかを返します。バッファには128バイトまで保持できます。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.available()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上のサンプルコードは、Example-1が通常のArduinoボード、Example-2がArduino Megaボードの使用例です。

Serial.read

Serial.readは、受信データを読み込みます。読み込み可能なデータの最初の1バイトを返しますが、-1の場合は、データが存在しません。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.read()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、Serial.availableで受信状況を確認し、incomingByteにSerial.readで読み取ったデータを格納しています。

Serial.peek

Serial.peekは、受信データを1バイト読み込みます。ただし、読みだしたデータはバッファから受信データは削除されず、またバッファ中の読み取り位置は変更しません。つまり、Serial.peekを繰り返し使用しても同じ文字を繰り返し読み取る事になります。Serial.peekは、読み込み可能なデータの最初の1バイトを返します。-1の場合は、データが存在しません。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.peek()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

Serial.flush

Serial.flushは、シリアルデータの送信が完了するまで待機を指示します。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.flush()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

Arduino 1.0以前では、上記の処理と違って受信バッファをクリアする仕様でしたので注意が必要です。

Serial.print

ASCIIフォーマットでデータをシリアルポートへ出力します。 数値は1桁ずつASCII文字に変換されます。浮動小数点数の場合は、デフォルトで小数点以下第2位まで出力されます。またバイト型のデータは1文字として送信され、文字列はそのまま送信されます。設定パラメータは次の通りです。

data: 出力する値。すべての型に対応しています。
format: 基数または有効桁数(浮動小数点数の場合)

送信後、送信したバイト数を返します。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.print(data, format)” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例に加えて、様々な出力例を挙げておきます。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.print(data, format)” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

println

Serial.printlnは、データの末尾に改行コードをつけて送信します。改行コードとして、キャリッジリターン(ASCIIコード13あるいは’\r’)とニューライン(ASCIIコード10あるいは’\n’)を付けられます。なお、Serial.print()と同じフォーマットが使えます。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:println()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

上の例では、アナログ入力の値を様々なフォーマットで送信します。この例ではデータごとに改行されます。上記に加えて幾つかの出力例を次に挙げておきます。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.print(data, format)” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

Serial.write

Serial.writeは、シリアルポートにバイナリデータを出力します。1バイトずつ、あるいは複数バイトの送信が可能です。設定パラメータは次の通りです。

val: 送信する値(1バイト)
str: 文字列(複数バイト)
buf: 配列として定義された複数のバイト
len: 配列の長さ

なおSerial.writeは、送信後に送信したバイト数を返します。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Serial.write()” by Arduino Team, used under CC BY-SA 3.0/ easy labo made some changes and comments to the original

数値を表す文字(列)として送信したい場合は、Serial.printを使う必要がありますので注意してください。

→その他のArduino関連情報

Sponsored Link