説明
Serial Last revision 2024/11/20 説明Arduinoボードとコンピュータや他の機器との通信に利用する。全てのArduinoボードは、少なくとも一つのシリアルポート(UARTやUSARTとも呼ばれる)を持っている。複数のシリアルポートを持つボードもある。
Board Serial pins Serial1 pins Serial2 pins Serial3 pins Serial4 pins UNO R3, UNO R3 SMD Mini 0(RX), 1(TX) Nano (classic) 0(RX), 1(TX) UNO R4 Minima, UNO R4 WiFi 0(RX0), 1(TX0) Leonardo, Micro, Yún Rev2 0(RX), 1(TX) UNO WiFi Rev2 0(RX), 1(TX) MKR boards 13(RX), 14(TX) Zero 0(RX), 1(TX) GIGA R1 WiFi 0(RX), 1(TX) 19(RX1), 18(TX1) 17(RX2), 16(TX2) 15(RX3), 14(TX3) Due 0(RX), 1(TX) 19(RX1), 18(TX1) 17(RX2), 16(TX2) 15(RX3), 14(TX3) Mega 2560 Rev3 0(RX), 1(TX) 19(RX1), 18(TX1) 17(RX2), 16(TX2) 15(RX3), 14(TX3) Nano 33 IoT 0(RX0), 1(TX0) Nano RP2040 Connect 0(RX0), 1(TX0) Nano BLE / BLE Sense 0(RX0), 1(TX0)Nano ESP32は、ESP32コアベースなので、例外となっている。このボードでは、Serial0がRX0とTX0を参照し、Serial1とSerial2は、追加のポートで、空いている任意のポートを割り当てることができる。
Board Serial0 pins Serial1 pins Serial2 pins Serial3 pins Serial4 pins Nano ESP32 0(RX0), 1(TX0) 任意のGPIO 任意のGPIONano ESP32に追加のシリアルポートを設定する方法は、この記事を参照すること。
古いボード(UnoとNano、Mini、Mega)では、0番ピンと1番ピンがコンピュータとの通信に使われる。これらのピンに何かをつなぐと、通信(ボードへのスケッチのアップロードを含む)に支障が出る可能性がある。
Arduino環境に組み込みのシリアルモニタをArduinoボードと通信するために使うことができる。ツールバーのシリアルモニタボタンをクリックし、Serial.begin()で設定したのと同じ通信速度を選択すると利用できる。
TX/RXピンを使ったシリアル通信はTTLロジックレベル(ボードにより、5Vもしくは3.3V)を利用する。これらのピンをRS232シリアルポートに直接接続しないこと。RS232は±12Vで動作するので、Arduinoボードが壊れるかもしれない。
これらのピンにはUSB-シリアル変換器が接続されていないので、これらのピンをPCとの通信に使うためには、外付けのUSB-シリアル変換器が必要となる。これらを外部のTTLシリアル機器との通信に使うには、ArduinoのTXピンと機器のRXピン、ArduinoのRXピンと機器のTXピンとを接続し、Megaのアースと機器のアースとを接続する必要がある。
参照- ReadASCIIString
- ASCII TAble
- Dimmer
- Graph
- Physical Pixel
- Serial Call Response
- Serial Call Response ASCII
SerialやSerial1、Serial2、Serial3は、C++の変数(オブジェクト)として、あらかじめ定義されているので、ユーザが定義する必要はありません。
Serial if(Serial) 指定したシリアルポートが利用可能かを示す。Serial.available() シリアルポートから読み取り可能なバイト数(文字数)を取得する。Serial.availableForWrite() シリアルバッファに書き込み可能なバイト数(文字数)を取得する。Serial.begin() シリアルデータを送信する際の通信速度をbps(ビット/秒)で設定する。Serial.end() シリアル通信を終了する。Serial.find() 与えらえた長さの、目的となる文字列がシリアルバッファで見つかるまで、データを読み込む。Serial.findUntil() 与えらえた長さの、目的となる文字列がシリアルバッファで見つかるまで、もしくは、終端文字列が見つかるまで、データを読み込む。Serial.flush() 送信データの送信が完了するまで待つ。Serial.parseFloat() シリアルバッファから最初の有効な浮動小数点値を返却する。Serial.parseInt() シリアルバッファから最初の有効なlong型の整数値を返却する。Serial.peek() シリアル通信用の受信バッファは保持したまま、受信したシリアルデータを読む。Serial.print() シリアルポートにASCIIテキストとして可読文字を表示する。Serial.println() シリアルポートにASCIIテキストとして可読文字を表示する。最後にCR/LF(復帰/改行)を表示する。Serial.read() 受信したシリアルデータを読む。Serial.readBytes() シリアルバッファから文字列をバッファに読み込む。Serial.readBytesUntil() シリアルバッファから文字列をバッファに読み込む。この関数は終端文字を検出するか、指定した長さの文字列が読み込まれるか、タイムアウトすれば終了する。Serial.readString() シリアルバッファから文字を読み込み文字列を作成する。Serial.readStringUntil() シリアルバッファから文字を読み込み、文字列を作成する。この関数は終端文字を検出するか、指定した長さの文字列が読み込まれるか、タイムアウトすれば終了する。Serial.setTimeout() シリアルデータ受信の最大待ち時間を設定する。Serial.write() バイナリデータをシリアルポートに書き込む。serialEvent() データが利用可能な時に呼び出される関数を定義することができる。 オリジナルのページhttps://docs.arduino.cc/language-reference/en/functions/communication/serial/