シリアル通信(SoftwareSerialクラス)

シリアル通信(SoftwareSerialクラス)

SoftwareSerialは、Serialクラスのシリアルポート以外のデジタルピンでシリアル通信を可能にするライブラリです。最大115200 bpsの速度を持つ複数のソフトウェアシリアルポートを持つことが可能です。ただし、ボーレートが115200bpsでは、受信のラッチタイミングがそれほど正確ではないため、注意してください。受信バッファは256バイト固定です。

使用する場合は、#include <SoftwareSerial.h>を記述して、SoftwareSerialクラスのインスタンスを生成してください。

SoftwareSerial用コンストラクタ

概要
SoftwareSerialクラスのインスタンス生成用コンストラクタです。
文法
SoftwareSerial(receivePin, transmitPin)
SoftwareSerial(receivePin, transmitPin, inverse_logic)
パラメータ
receivePin: 受信するピン
transmitPin: 送信するピン
inverse_logic: ロジックを反転する(デフォルト false)
戻り値
なし

begin

概要
シリアル通信のボーレート、ポートの設定を行います。
文法
serial.begin(int speed)
パラメータ
speed: ボーレート
戻り値
なし

end

概要
シリアル通信ポートの停止
文法
serial.end()
パラメータ
なし
戻り値
なし

available

概要
シリアル通信ポートから何バイトのデータが読み取れるかを返す
文法
int serial.available()
パラメータ
なし
戻り値
シリアルバッファにあるデータのバイト数。0の場合はデータなし

read

概要
シリアル通信ポートの受信バッファから1バイトのデータが読み出します。
文法
int serial.read()
パラメータ
なし
戻り値
データ。データなしの場合は-1が返る。

peek

概要
シリアル通信ポートの受信バッファにある先頭データを読み出します。バッファ中の読み込み位置は変更せずバッファを覗くだけです。
文法
int serial.peek()
パラメータ
なし
戻り値
先頭データ。データなしの場合は-1が返ります。

flush

概要
シリアル通信ポートの送信バッファが空になるまで待ちます。ただし、SoftwareSerialでは送信バッファに貯められることはありませんので、この関数は何もしません。
文法
serial.flush()
パラメータ
なし
戻り値
なし

write

概要
シリアル通信ポートに文字列やデータを出力する。
文法
serial.write(const char* str)
serial.write(const unsigned char* buf, int len)
パラメータ
str: 文字列
buf: 出力するデータのポインタ
len: 出力するデータの長さ
戻り値
出力したバイト数

print

概要
シリアル通信ポートに文字列を出力する。
文法
serial.print(val)
serial.print(val, format)
パラメータ
val: 出力したい値や文字列
format: 数値の場合はその基数(2:2進数、8:8進数、10:10進数、16:16進数)
戻り値
出力したバイト数

println

概要
シリアル通信ポートに文字列を改行付きで出力する。
文法
serial.println(val)
serial.println(val, format)
パラメータ
val: 出力したい値や文字列
format: 数値の場合はその基数(2:2進数、8:8進数、10:10進数、16:16進数)
戻り値
出力したバイト数

listen

概要
複数オブジェクトを生成している場合、対象オブジェクトをListen状態にする。他のオブジェクトの受信データは破棄されます。
文法
bool serial.listen()
パラメータ
なし
戻り値
true: 成功、false: 失敗

isListening

概要
対象オブジェクトがListen状態か確認する。
文法
bool serial.isListening()
パラメータ
なし
戻り値
true: Listen状態、false: Listen状態ではない

overflow

概要
受信バッファがオーバーフローしているか確認する。
文法
bool serial.overflow()
パラメータ
なし
戻り値
true: オーバーフローしている、false: オーバーフローしていない

サンプルプログラム

Pin 10を受信、Pin 11を送信としたシリアルポートを生成し、A0の値を出力するサンプルです。


#include <Arduino.h>
#include <SoftwareSerial.h>
 
SoftwareSerial serial(10, 11); // RX: 10, TX:11
int analogValue;
 
void setup()
{
  serial.begin(9600);
}
 
void loop()
{
  analogValue = analogRead(A0);
  delay(100);
}