ESP32[3] LEDを点けてみよう

マイコン開発者が初めてのマイコンを使うときは、大体がLEDを付けたり消したりの「Lチカ」をする人は多いのではないでしょうか? 私もそうです。前回のブログに書いたスケッチ例の中にBasics⇒Blinksというのがあります。これを最初のサンプルにすればよいと思います。ただ、ESP32ではLED_BUILTINが定義されていないので、GPIO_NUM_XX と書き換える必要があるようです。

また、LED一つ点けようというだけで、結構多くのことを気にしないといけません。まずは、自分のボードのピンアサインの確認です。ESP32はもともと周辺回路がないものを各社が色々開発キットとしたり、ESP32自体もシリーズがあったりするので、まずはピンアサインを確認してください。姿が一緒でも微妙にピンアサインが異なるものが存在しているようです。入力専用ピンというものもあるので、注意したほうがいいです。悩んだ挙句に入力しかできないのかと気が付くとむなしいものです。

次に、理由はわかりませんが、電源がONになった瞬間に一瞬だけ出力するポートをしないポートがあります。一瞬でもポートが出力してしまうと困る使い方をする場合は、色々ポートを試してください。

LEDの明るさを変えたい時はPWM機能を使って明るさを変えますが、PWMができるポートも限られます。すべてのGPIOがPWMできるわけではありません。

LEDとは関係ありませんが、GPIO割込みできるピンも8つしかないので、全体の入出力を考えてベストなピンを選択していきます。やみくもに決めていくと最後で全部ピン配置を変える羽目になります。そのためには、プログラムでは#defineを用いて一か所変えればすべてピンが変わるようなプログラム構造にしたほうが楽です。

GPIOの出力電流は最大40mAなので制限抵抗なしでもLEDが燃えることは無いと思います。しかし、3.3V出力はもっと流せるので、LEDが燃えます。40mAだと明るすぎるので、数キロオームの抵抗を入れた方がいいとは思います。

プログラムとは関係ありませんが、あくまでも1出力当たりの最大電流なので、1デバイスの最大出力電流は超えられないので、同時点灯をする場合はよく計算することと、外部にドライバーを持つことをお勧めします。