#author("2018-05-15T11:30:13+09:00","default:qua","qua") * シリアル通信(UART) [#k338aab2] シリアル通信は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-21T22:58:26+09:00","default:qua","qua") ** プログラム [#vf5c19e2] - ハードウェアシリアルのための準備~ 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に格納する }