シリアル通信(Serial)の使い方
Arduinoを使う上で最もお世話になるかも知れないライブラリです.内臓のUARTを使ってホストや他のデバイスと通信します.チップによっては複数のシリアルを持っているかもしれません.その場合はSerial*
のアスタリスクがインターフェース番号に変わります.
初期化
まずは初期化をしましょう.ここでボーレートやパリティ等の設定ができますが詳細は公式リファレンスを参照しましょう.
Serial.begin(9600); // シリアルを9600bpsで初期化
通信する
あとは通信するだけです.
Serial.print("AAA"); // 改行なし
Serial.println("BBB"); // 改行あり
// output> AAABBB
RAM容量を削減する
Arduinoが採用するAVRはハーバードアーキテクチャで,プログラムROMとRAMが独立したバスを持っています.プログラムROMにはプログラムから直接値を参照する事はできず,一旦RAMに専用のライブラリを用いてコピーする必要があります.このような使用のため,通常コード中に存在する文字列はスタートアップルーチンによって,起動時にRAM上に展開されます.つまり,文字列が増えると使用していないにも関わらずRAMが不足するといった状態を引き起こします.
そこで,先程述べた,プログラムROMからデータをRAMにコピーするライブラリを利用すれば良いわけですが,はっきり言って面倒です.そこでSerial
では_F()
マクロがあります.文字列リテラルとして直接Serial
で利用する場合,以下のように書き換えることで文字列をプログラムROMにのみ配置します.
Serial.println("Hello"); // placed on RAM
Serial.println(_F("Hello")); // placed on ROM