シリアル通信 – サンプルプログラム1
それでは、さっそくシリアル通信を行ってみましょう。詳細は後ほど解説するとして、以下のようにプログラムに追記しましょう。
main.cpp 04-1
#include <Arduino.h> // Arduino.h の読み込み
/*
* setup 関数
*/
void setup() {
/* ここにプログラムの最初に1回だけ実行したい処理を上から順に記述していきます */
// シリアル通信を115200bpsで開始
Serial.begin(115200);
// シリアルに「Hello, world!」と出力
Serial.println("Hello, world!");
// 入出力設定(アノード)
Code language: Arduino (arduino)
pinMode(0, OUTPUT);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
// 入出力設定(カソード)
pinMode(21, OUTPUT);
pinMode(22, OUTPUT);
pinMode(23, OUTPUT);
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
pinMode(32, OUTPUT);
pinMode(33, OUTPUT);
// 出力レベル設定(アノード)
digitalWrite(0, HIGH);
digitalWrite(2, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(16, LOW);
digitalWrite(17, LOW);
digitalWrite(18, LOW);
digitalWrite(19, LOW);
// 出力レベル設定(カソード)
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
digitalWrite(23, HIGH);
digitalWrite(25, HIGH);
digitalWrite(26, HIGH);
digitalWrite(27, HIGH);
digitalWrite(32, HIGH);
digitalWrite(33, HIGH);
}
/*
* loop 関数
*/
void loop() {
/* ここにプログラム中で繰り返し実行したい処理を上から順に記述していきます */
}
Code language: Arduino (arduino)
プログラムの転送が完了したら、VSCodeの画面右上の「Serial Monitor (Ctrl+Alt+S)」をクリックしてシリアルモニタを開きましょう。
ESP32モジュールのENボタンをクリックしてマイコンをリセットすると、マイコンに関する情報に続いて「Hello, world!」と出力されます。
次に、各命令を見ていきましょう。
シリアル通信の開始
Serial.begin(115200);
Code language: Arduino (arduino)
Arduinoフレームワークにはシリアル通信を行う仕組みが備わっており、C++の「クラス」という機能で実装されています。
上記の例の、ドットの前の「Serial」は、この「クラス」を用いて作られたシリアル通信を扱うための便利な「モノ」(オブジェクト)だと考えておきましょう。
ドットの後の「begin()」はSerialというオブジェクトに含まれている関数で、「Serial.begin()」でシリアル通信を開始することができます。
引数には通信速度を指定します。省略も可能であり、省略した場合は9600bpsになります(ただし、先述のとおりESP32では115200bpsが標準の通信速度です)。
シリアルに1行出力
Serial.println("Hello, world!");
Code language: Arduino (arduino)
「Serial.println()」は、引数に指定した値を改行とともにシリアルに出力します。
ここでは文字列を出力していますが、数値も文字列に変換した上で出力してくれます。
引数を省略した場合は、改行のみ行います。
シリアル通信では、上記以外にもいろいろな操作が可能です。本コースでは、必要に応じて都度見ていくことにします。