ESP32のMicroPythonでLEDを点灯・制御する方法(2)【Lチカ完全解説】
この記事では、インストールしたMicroPythonでESP32のLEDを点滅させる方法を解説します。
この記事で学べること
- MicroPythonのモジュールの調べ方
- ESP32 の GPIO の基本が理解できる
- MicroPython で LED を点灯・消灯できる
- Lチカ(点滅制御)を実装できる
ステップごとの解説
- MicroPythonのモジュールを調べる
MicroPythonのモジュールに、neopixelがあるか調べます。
REPLにて、help(‘modules’)を実行します。neopixelがリストに表示されるのでモジュールにあることがわかります。
MicroPython v1.25.0 on 2025-04-15; Generic ESP32S3 module with ESP32S3
Type "help()" for more information or .help for custom vREPL commands.
>>> help('modules')
__main__ btree io ssl
_asyncio builtins json struct
_boot cmath machine sys
_espnow collections machine time
_onewire cryptolib math tls
_thread deflate micropython uasyncio
_webrepl dht mip/__init__ uctypes
aioespnow ds18x20 neopixel umqtt/robust
apa106 errno network umqtt/simple
array esp ntptime upysh
asyncio/__init__ esp32 onewire urequests
asyncio/core espnow os vfs
asyncio/event flashbdev platform webrepl
asyncio/funcs framebuf random webrepl_setup
asyncio/lock gc re websocket
asyncio/stream hashlib requests/__init__
binascii heapq select
bluetooth inisetup socket
Plus any modules on the filesystem
>>>
- neopixelのモジュールの関数を調べる
neopixelのモジュールの関数一覧を表示させます。
REPLにて、import neopixelの後、dir(neopixel)を実行すると、NeoPixelという関数があることがわかります。さらに、dir(neopixel.NeoPixel)を実行すると、writeという関数があることがわかります。
MicroPython v1.25.0 on 2025-04-15; Generic ESP32S3 module with ESP32S3
Type "help()" for more information or .help for custom vREPL commands.
>>> import neopixel
>>> dir(neopixel)
['__class__', '__name__', '__dict__', '__file__', 'bitstream', 'NeoPixel', '__version__']
>>> dir(neopixel.NeoPixel)
['__class__', '__getitem__', '__init__', '__len__', '__module__', '__name__', '__qualname__', '__setitem__', 'write', '__bases__', '__dict__', 'fill', 'ORDER']
- GPIOとは?
GPIO(General Purpose Input / Output)とは、マイコンが外部の機器と信号をやり取りするための汎用ピンのことです。
ESP32 では、この GPIO を使って以下のような制御を行います。
- LED を点灯・消灯する
- ボタンの押下を検出する
- センサーの値を読み取る
- 外部回路を ON / OFF する
ESP32 には複数の GPIO ピンがありますが、すべてが自由に使えるわけではないので注意が必要です。
- 入力と出力の違い
出力(Output)
ESP32 から 信号を出す 使い方です。
・LED を点灯させる
・リレーを制御する
Pin(2, Pin.OUT)
入力(Input)
外部からの 信号を受け取る 使い方です。
・ボタンの ON / OFF を検出
・センサーの状態を読む
Pin(0, Pin.IN)
- なぜ GPIO の理解が重要なのか?
GPIO は、ESP32 を使った開発の すべての基本 になります。
・LED 制御
・ボタン入力
・センサー
・通信状態の表示
これらはすべて GPIO の理解が前提です。
GPIO が理解できれば、ESP32 を使った開発の幅が一気に広がります。
- NeoPixelを駆動するためのGPIOを調べる
NeoPixel 駆動のためにGPIOを使うのですが、GPIOは下図のピンレイアウトに載っていますので、 21 を出力に設定します。

- neopixelモジュールをインポートして、GPIOを設定する
main.pyに、import neopixelを記入します。次に、NeoPixel 駆動のためにGPIOを使うので、import machineを記入します。neopixelを駆動するためのGPIOは21を出力に設定します。
NeoPixelはRGBのLEDなので、白を設定して点灯させます。
import neopixel
import machine
pin = machine.Pin(21, machine.Pin.OUT) # NeoPixel 駆動のための GPIO 21 を出力に設定
np = neopixel.NeoPixel(pin, 8) # 8ピクセル用の NeoPixel ドライバーを GPIO 21 で作成
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
- main.pyを実行してLEDを点灯させる
4の内容を、main.pyに書き込み、保存させます。左のエクスプローラにて、main.pyを選択して、右クリックから、「Run current file on Pico」をクリックすると、M5StampS3上のLEDが白で点灯します。

- LEDを点滅させる
点滅させるために、timeモジュールをインポートします。3回点滅させるので、for文でループさせて、点滅間隔は、500msにします。下記の内容で保存して、左のエクスプローラにて、main.pyを選択して、右クリックから、「Run current file on Pico」をクリックすると、M5StampS3上のLEDが白で3回点滅します。
import neopixel
import machine
import time
pin = machine.Pin(21, machine.Pin.OUT)
np = neopixel.NeoPixel(pin, 8)
for _ in range(3): # 3回ループさせる
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
np[0] = (0, 0, 0) # 第1ピクセルを消灯に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
- main.pyを自動実行させる
for文以下をmain関数にします。最後に下記を記入します。
if __name__ == "__main__":
main()
これの意味は:
➡ 「このファイルを直接実行したときだけ main() を動かす」
➡ 「import されたときには main() を動かさない」
import neopixel
import machine
import time
pin = machine.Pin(21, machine.Pin.OUT) # NeoPixel 駆動のための GPIO 21 を出力に設定
np = neopixel.NeoPixel(pin, 8) # 8ピクセル用の NeoPixel ドライバーを GPIO 21 で作成
def main():
for _ in range(3): # 3回ループさせる
np[0] = (255, 255, 255) # 第1ピクセルを白に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
np[0] = (0, 0, 0) # 第1ピクセルを消灯に設定
np.write() # 全ピクセルにデータ書込み
time.sleep_ms(500) # 500msecのタイマー設定
if __name__ == "__main__":
main()
- main.pyをESP32S3に転送する
7の内容で保存して、左のエクスプローラにて、main.pyを選択して、右クリックから、「Upload file to Pico」をクリックします。すると、M5StampS3上のLEDが白で3回点滅します。
- M5StampS3をUSB電源に接続する
M5StampS3をPCから切断して、USB電源に接続します。すると、M5StampS3上のLEDが白で3回点滅します。
まとめ
- LED 制御は ESP32 学習の第一歩
- GPIO の仕様を理解することが重要
- Lチカができれば他の制御も簡単
ESP32にMicroPythonをインストールすれば、シンプルなコードでLEDを点灯させたり、センサーを動かしたりできます。応用すればIoTデバイスに簡単に組み込めます。
