メインコンテンツに移動

シリアル通信

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

PCや他のマイコンと通信をするためのライブラリです。ADZUKIボードでは、2組のシリアルポート(TX、RX)を使用できます。それぞれSerial(ピン1、ピン0)、Serial1(ピン7、ピン8)として使用できますが、SerialはUSB通信に割り当たっています。

これらのシリアルポートで足りない場合は、SoftwareSerialをお試しください。

begin

概要

シリアル通信のボーレート、ポートの設定を行います。

文法

Serial.begin(baud)
Serial.begin(baud, config)
Serial.begin(baud, config, rx_buf, tx_buf)

パラメータ

baud: ボーレート
config: データビット幅、パリティ、ストップビット。下記から選択。
  SERIAL_7N1
  SERIAL_8N1(デフォルト)
  SERIAL_7N2
  SERIAL_8N2
  SERIAL_7E1
  SERIAL_8E1
  SERIAL_7E2
  SERIAL_8E2
rx_buf: 受信バッファサイズ(デフォルト 256)
tx_buf: 送信バッファサイズ(デフォルト 256)

戻り値

なし

end

概要

シリアル通信ポートの停止

文法

Serial.end()

パラメータ

なし

戻り値

なし

available

概要

シリアル通信ポートから何バイトのデータが読み取れるかを返す

文法

int Serial.available()

パラメータ

なし

戻り値

シリアルバッファにあるデータのバイト数。0の場合はデータなし

read

概要

シリアル通信ポートの受信バッファから1バイトのデータが読み出します。

文法

int Serial.read()

パラメータ

なし

戻り値

データ。データなしの場合は-1が返る。

peek

概要

シリアル通信ポートの受信バッファにある先頭データを読み出します。バッファ中の読み込み位置は変更せずバッファを覗くだけです。

文法

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: 数値の場合はその基数(2:2進数、8:8進数、10:10進数、16:16進数)

戻り値

出力したバイト数

println

概要

シリアル通信ポートに文字列を改行付きで出力する。

文法

Serial.println(val)Serial.println(val, format)

パラメータ

val: 出力したい値や文字列
format: 数値の場合はその基数(2:2進数、8:8進数、10:10進数、16:16進数)

戻り値

出力したバイト数

availableForWrite

概要

送信バッファの空き容量を返す。

文法

int Serial.availableForWrite()

パラメータ

なし

戻り値

空き容量

availableForRead

概要

受信バッファの空き容量を返す。

文法

int Serial.availableForRead()

パラメータ

なし

戻り値

空き容量


サンプルプログラム

Serialで受信したデータをSerial1に出力し、Serial1で受信したデータをSerialに出力します。


        #include <Arduino.h>
        void setup()
        {
            Serial.begin(9600);
            Serial1.begin(9600);
        }
            
        void loop()
        {
            if(Serial.available())
            {
                char c = Serial.read();
                Serial1.write(c);
            }
            
            if(Serial1.available())
            {
                char c = Serial1.read();
                Serial.write(c);
            }
        }