NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(SoftwareSerial関数の使い方)

■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());
}
イメージ 1
図1:プログラム例

■構文
 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で動作しません

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る