やっぱり最初はLチカ
やはり新しいマイコンの開発に挑戦するなら、最初はLEDの点滅…通称『Lチカ』からとりかかりましょう。基本的な流れは Arduino と同じです。
動作原理の説明などは Arduino のときの記事を参照していただくとして、早速装置を組み立てていきましょう。
製作・実行
回路
今回の実験回路は以下の通りです。
これ以上シンプルにはならないというほどシンプルです。ESP32 Devkit の入出力端子の1つとGNDのあいだに LED と電流制限抵抗を接続するだけです。
使用部品
LED
一般的なLEDならなんでも可です。数十本入りの袋が数百円で売られているような安価なもので十分です。ただし抵抗入りのものは汎用性が低くなるので、抵抗なしのものを用意した方がいいでしょう。
抵抗器
LEDの特性に合わせて変更してください。回路図では470Ωとしてありますが、これは順方向電圧 \(V_F\) = 1.2 V で電流 5mA 程度にする場合のものです。
LEDの種類によってはもっと電流が必要な場合もありますが、データシートによるとESP32の端子出力電流の絶対最大定格は 40mA なので、これを絶対に超えないように抵抗値を指定します。
ブレッドボード
ESP32-Devkitは横幅が広く、一般的なサイズのブレッドボードに刺すと片側の配線が出来なくなってしまうので、できれば片側6穴のブレッドボードを用意した方がよいと思います。
ただし今回の実験では片側のピンにしか配線しないため一般的なブレッドボードでも使用可能です。
配線
配線は下図のとおりです。ESP32-Devkitは1番端子が左下(USB端子が左側)にくる向き、LEDはアノード(長い方の足)が図の左側、抵抗器は左右が逆でも大丈夫です。
実際の配線は下の写真のようになります。
プログラム
#define LED_PIN 12
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
プログラムの解説
ESP32のプログラミングは、Arduinoと同様Cに似た言語で行います。関数も同じものが多く使用できますので、Arduinoのプログラムを組める人ならすぐにESP32用の開発を行うことが出来るでしょう。
定数の宣言
#define LED_PIN 12
LEDを接続した端子に LED_PIN という名前でアクセスできるように端子番号を定数として定義しています。プログラム中に直接番号を記述してもいいのですが、このように定数として定義しておいた方が後々変更があったときに間違いが起こりにくくなります。
setup関数(初期設定)
void setup() {
pinMode(LED_PIN, OUTPUT);
}
Arduinoと同様、setup()関数はボードの起動時に一度だけ実行されます。
pinMode()関数は端子の動作(入力/出力)を指定する関数です。この例では LED_PIN 端子を出力に設定しています。
loop関数()
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
Arduinoと同様、loop()関数はボードの起動中繰り返し実行されます。
digitalWrite()関数は、端子の出力をHIGH/LOWで指定します。今回の回路の場合、HIGHでLEDが点灯/LOWでLEDが消灯します。
delay()関数は指定した時間(単位はミリ秒)だけ処理を待ちます。
よって、このプログラムは
LED点灯 → 500ms待つ → LED消灯 → 500ms待つ
を繰り返します。
実行結果
この動画のようになれば成功です。
コメント