シリアル通信(Serialクラス)

PCや他のマイコンと通信をするためのライブラリです。シリアル用のチャネルは合計8本使用可能で、1チャネルはUSB通信用、7チャネルはUART通信用です。 対応するチャネルとピン番号は以下の通りで、ピンマップでも確認できます。

Serial : USB通信
Serial1: 0(RX), 1(TX)
Serial2: 7(RX), 6(TX)
Serial3: 26(RX), 24(TX)
Serial4: 5(RX), 3(TX)
Serial5: 8(RX), 9(TX)
Serial6: 11(RX), 12(TX)
Serial7: 60(RX), 58(TX)

available

概要 シリアル通信ポートから何バイトのデータが読み取れるかを返す
文法 int Serial.available()
パラメータ なし
戻り値 シリアルバッファにあるデータのバイト数。0の場合はデータなし

begin

概要 シリアル通信のボーレート、ポートの設定を行います。
文法 Serial.begin(unsigned long speed, config)
パラメータ speed: ボーレート (約1,200~3,000,000Hz)
config(オプション): データ長、パリティ、ストップビットの設定。以下のいずれかから選択。
SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1 (default),
SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2,
SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1,
SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2,
SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1,
SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2      
戻り値 なし
補足 設定するボーレートによって、誤差が発生します。
一般的なボーレートで4800, 9600, 19200, 38400, 57600, 115200, 230400(bps)までは誤差は比較的小さく、1バイト以下の通信は正常に行うことができます。
これ以上のボーレートを設定する場合、500000, 1000000, 1500000, 3000000(bps)を設定してください。

end

概要 シリアル通信ポートの停止
文法 Serial.end()
パラメータ なし
戻り値 なし

read

概要 シリアル通信ポートの受信バッファから1バイトのデータが読み出します。
文法 int Serial.read()
パラメータ なし
戻り値 データ。データなしの場合は-1が返る。

peek

概要 シリアル通信ポートの受信バッファにある先頭データを読み出します。バッファ中の読み込み位置は変更しないので、バッファを覗くだけ。CRLFの変換は行われません。
文法 int Serial.peek()
パラメータ なし
戻り値 先頭データ。データなしの場合は-1が返る。

flush

概要 シリアル通信ポートの送信バッファが空になるまで待ちます。
文法 Serial.flush()
パラメータ なし
戻り値 なし

write

概要 シリアル通信ポートに文字列やデータを出力する。
文法 Serial.write(const char* str)
Serial.write(const unsigned char* buf, int len)
パラメータ str: 文字列
buf: 出力するデータのポインタ
len: 出力するデータの長さ
戻り値 出力したバイト数

print

概要 シリアル通信ポートに文字列を出力します。
文法 Serial.print(val)
Serial.print(val, format)
パラメータ val: 出力したい値や文字列
format: 数値の場合はその基数(BIN:2進数、OCT:8進数、DEC:10進数、HEX:16進数)
戻り値 出力したバイト数

println

概要 シリアル通信ポートに文字列を改行付きで出力する。
文法 Serial.println(val)
Serial.println(val, format)
パラメータ val: 出力したい値や文字列
format: 数値の場合はその基数(BIN:2進数、OCT:8進数、DEC:10進数、HEX:16進数)
戻り値 出力したバイト数


サンプルプログラム

フォーマットに応じて出力するサンプルです。

#include <Arduino.h>
/*
Uses a FOR loop for data and prints a number in various formats.
*/
int x = 0;    // variable

void setup() {
  Serial.begin(9600);      // open the serial port at 9600 bps:
  while(!Serial.available());// wait to press key
  Serial.read(); //dummy read
}

void loop() {  
  // print labels 
  Serial.print("RAW");       // prints a label
  Serial.print("\t");              // prints a tab

  Serial.print("DEC");  
  Serial.print("\t");      

  Serial.print("HEX"); 
  Serial.print("\t");   

  Serial.print("OCT");
  Serial.print("\t");

  Serial.print("BIN");
  Serial.print("\t"); 

  for(x=0; x< 64; x++){    // only part of the ASCII chart, change to suit

    // print it out in many formats:
    Serial.print(x);       // print as an ASCII-encoded decimal - same as "DEC"
    Serial.print("\t");    // prints a tab

    Serial.print(x, DEC);  // print as an ASCII-encoded decimal
    Serial.print("\t");    // prints a tab

    Serial.print(x, HEX);  // print as an ASCII-encoded hexadecimal
    Serial.print("\t");    // prints a tab

    Serial.print(x, OCT);  // print as an ASCII-encoded octal
    Serial.print("\t");    // prints a tab

    Serial.println(x, BIN);  // print as an ASCII-encoded binary
    //                             then adds the carriage return with "println"
    delay(200);            // delay 200 milliseconds
  }
  Serial.println("");      // prints another carriage return
}

めいど by がじぇっとるねさすプロジェクト
Contents are CC BY-SA 3.0