組み込み開発を、実機で体系的に学びませんか?
クミタテでは、ESP32・電子回路・IoT開発を学べる オンライン教材を公開しています。無料会員向け教材も利用できます。
無料会員登録して教材を見る Googleアカウントなら簡単に登録できます
この動画では、Arduino(ESP32-S3)のサンプルプログラムを使って、マイコンボードに内蔵されたLEDを1秒間隔で点滅させる仕組みを解説します。
Arduinoを開いて、
ファイル → スケッチ例 → 01.Basics → Blink
から、点滅プロジェクトを開きます。
以下のプログラムが表示されます。
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
マイコンにプログラムを書き込んで実行すると、最初に setup() 関数 が呼ばれます。
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
setup() の中括弧 {} に書かれた処理(11〜12行目)が最初に実行されます。
11行目の // 以降はコメントです。
プログラムの動作には影響せず、処理の目的をメモしておくために使います。
12行目の pinMode() 関数では、ピンの入出力設定を行います。
ESP32-S3 のピン配置を見ると、両側に多くのピンが並んでおり、ピンによって複数の機能を持っています。
例:
pinMode() はその中から GPIO として使うピン番号 と 入力 or 出力 を指定する関数です。
プログラムの7行目には次の記述があります。
#define LED_BUILTIN 2
これは LED_BUILTIN という名前を「2」に置き換える という意味です。
つまり、コード
pinMode(LED_BUILTIN, OUTPUT);
は、コード
pinMode(2, OUTPUT);
と同じ意味になります。
ESP32-S3 のピンレイアウトを見ると、GPIO2 は以下の機能を持っています。
そして基板上では IO2 と書かれた内蔵LED がこの GPIO2 に接続されています。
そのため、GPIO2 を出力に設定して電圧をかけると、基板のパターンを通じて内蔵LEDが点灯します。
setup() の後は、loop() 関数 が呼ばれ続けます。
cpp
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
17〜20行目の処理を繰り返し実行します。
digitalWrite(LED_BUILTIN, HIGH);
digitalWrite(LED_BUILTIN, LOW);
delay(1000); は 1000ミリ秒(1秒)待つ という意味です。
つまり、
という動作を繰り返し、1秒間隔の点滅が実現します。
プログラムを実行すると、内蔵LEDが
を繰り返します。
Arduino 入門として非常にわかりやすいサンプルなので、まずはこの動作を理解することで、GPIO制御の基礎がしっかり身につきます。