■SoftwareSerial関数
SoftwareSerial関数は、コールする事で新しいSoftwareSerialオブジェクトが作成されます。
Arduinoのハードウェアには、0,1ピンにUARTと呼ばれるハードウェアシリアル通信が組み込まれています。(このハードウェアは、64バイトのシリアルバッファに余裕がある限り、Atmegaチップが他のタスクで作業中であってもシリアル通信を受信できます。)
SoftwareSerialライブラリーは、ハードウェアシリアル通信が組み込まれていないデジタルピンにおいてもシリアル通信を可能にするために開発された物です。
通信速度は最大115200 bpsをサポートしており、また複数のソフトウェアシリアルポートを持つことが可能です。※受信できるのは1度にひとつのポートだけです。
■使用例
ArduinoIDEで使用するSoftwareSerial関数の使い方は以下の通りです。
試しにこのプログラムをArduinoUNOで実行すると、最初にSoftwareSerial関数でシリアルポートオブジェクトを名前を付けて作成します。
次にSoftwareSerialライブラリの.begin関数で作成したオブジェクトを指定してソフトウェアシリアルの初期化(通信速度の設定)を行います。
最後にSoftwareSerialライブラリの.available関数によってソフトウェアシリアルポートのバッファに到着データが有った場合に.read関数でデータを読み込みシリアルモニターに出力します。
#include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { Serial.begin(57600); // ハードウェアシリアルを準備 while (!Serial) { ; // シリアルポートの準備ができるのを待つ(Leonardoのみ必要) } Serial.println("Ready"); mySerial.begin(4800); // ソフトウェアシリアルの初期化 mySerial.println("Hello, world?"); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
■構文
SoftwareSerial(rxPin, txPin)
■パラメータ
rxPin: データを受信するピン
txPin: データを送信するピン
■戻り値
有りません
■補足
〇「Leonardo」と「Micro」でrxピンに指定できるのは次のピンです 。
8、9、10、11、14、15、16
〇「Mega」でrxピンに設定できるのは次のピンです 。
10、11、12、13、50、51、52、53、62、63、64、65、66、67、68、69
〇「101」では、
最大RX速度は57600bps
RXはピン13で動作しません