#author("2019-04-21T22:58:03+09:00","default:qua","qua")
* シリアル通信(UART) [#z8390d5b]
シリアル通信は1対1の通信で、Arduinoどうし、Arduinoと入出力装置、ArduinoとPCの通信に用いられる。通信は対等に行なわれ、3本の線(Rx(受信), Tx(送信), GND)で接続される。一方のRxと他方のTxを、また、GNDどうしをつなぐ。Arduinoのシリアル通信には、0番ピンをRx, 1番ピンをTxとするハードウェアシリアルと、任意のデジタルピンをRx, Txにできるソフトウェアシリアルとがある。Arduino IDE(PCでプログラムを作成するアプリケーション)のシリアルモニタは、ArduinoとPCの間でハードウェアシリアル通信を行なう。
#author("2019-04-21T23:22:13+09:00","default:qua","qua")

** プログラム [#l02c86ab]
- ハードウェアシリアルのための準備~
setup()内で通信速度を設定する。
 Serial.begin( rate );
rateの部分には通信速度(bit/秒)を指定する。
300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200
の値が指定可能である。通信を行なう両者でこの値を合わせること。

- ソフトウェアシリアルのための準備~
ソフトウェアシリアル通信を行なうには、まずSoftwareSerial.hをインクルードする。
 #include <SoftwareSerial.h>
次の文で、ソフトウェアシリアル通信の名前(この例ではmySerial)とRx, Txのピン番号を指定する。
 SoftwaerSerial mySerial( Rx, Tx );
さらに、setup()の中で、ピンの設定と通信速度の設定を行なう。
 pinMode( Rx, INPUT );
 pinMode( Tx, OUTPUT );
 mySerial.begin( rate );
を実行する。rateはハードウェアシリアルと同じ。
- 送受信(例えば、loop()中などに書く)~
以下、ハードウェアシリアルの例を記すが、ソフトウェアシリアルにするには、SerialをmySerialなどに変えればよい。
-- 送信例
 Serial.write( 12 );        // 数値12を送信
 Serial.write( "12" );      // 文字列"12"(数値では0x31と0x32の2バイト)を送信
 Serial.print( "Hello" );   // 文字列"Hello"を送信
 Serial.println( "Hello" ); // 文字列"Hello\n"を送信
-- 受信例
 int c;
 if( Serial.available()>0 ){ // 受信データがあれば
   c = Serial.read();        // 1バイト受信して、cに格納する
 }


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS