【Arduino IDE・ESP32】Lチカできない!を解決。ESP32でLEDが光らない時の3大原因と対処法

esp32で内蔵ledが点灯しないときの対処法まとめ

初めに:”内蔵LEDが光らない(´・ω・`)”

Arduino IDEのコンソールに「Done uploading(書き込み完了)」の文字。 「よし成功だ!」と思ったのも束の間、手元のESP32の内蔵LEDがピクリともしない……。

この「プログラムの転送はできているのに動かない」という状況、実はESP32の「ボードごとの個性の強さ」が原因であることがほとんどです。

チェックすべきポイントを、可能性が高い順に3つに絞って解説します。

三大原因

  • ピン番号の不一致
  • 実行のトリガーがなされていない
  • 内蔵LEDの仕様が違う

1. 【原因:ピン番号の不一致】その「8番」は本当にLEDの場所?

ESP32は種類が非常に多く、モデルによって内蔵LEDがつながっているピン(GPIO)がバラバラです。

  • 代表的なピン番号: 2, 8, 13, 21 など。
  • よくあるミス: ネットで見つけたサンプルコードの「2」をそのまま使っているが、自分のボードは「8」だった、というパターン。

解決策:ピン番号を「スキャン」して特定する

仕様書を読み解くのが確実ですが、「片っ端から光らせてみる」というのも、一番手っ取り早い方法です。以下のコードを書き込んで、LEDがチカッとした瞬間のシリアルモニタの数字を確認しましょう。

/* ESP32 内蔵LED特定スキャナー(安定版)
   ツクモログ:トラブルシューティング用
*/

// 内蔵ledによく使われるピン
int probePins[] = {2, 5, 8, 12, 13}; 

void setup() {
  Serial.begin(115200);
  delay(1000); 
  Serial.println("\n--- Scan Start ---");
}

void loop() {
  int numPins = sizeof(probePins) / sizeof(int);

  for (int i = 0; i < numPins; i++) {
    int p = probePins[i];
    
    Serial.printf("Testing GPIO %d...\n", p);
    
    pinMode(p, OUTPUT);
    digitalWrite(p, HIGH); // 点灯
    delay(3000);
    digitalWrite(p, LOW);  // 消灯
    delay(500);
  }
  
  Serial.println("--- Cycle End ---");
  delay(2000);
}

実行後、シリアルモニタにチェック中のピン番号などが表示されます。

12番付近で変な英語のログが出て止まることがありますが、それは仕様なので気にせず、それまでに光った番号を確認してください。通常基板なら2か8なので、そこまでで特定できているはずです。


2. 【原因:実行のトリガー】リセットボタン(EN/RST)を押していない

書き込みが終わった直後、プログラムが自動で開始されないボードがたまにあります。

  • 症状: 書き込み直後は無反応だが、特定の操作で動き出す。
  • 対処法: ボード上にある「EN」または「RST」と書かれたボタンをポチッと一回押してください。
    • これでESP32が再起動し、今書き込んだばかりのプログラムが先頭から実行されます。
ESP32のリセットができる "RST"または”EN”ボタンが基板上でどのようにひょきされているかを示すために、ESP32DとESP3Cでの表記を示した画像

3. 【原因:LEDの仕様】実は「普通のLED」じゃないかも?

最近の多機能な小型ボード(ESP32-C3やS3の一部など)では、単純な digitalWrite では制御できないLEDが載っていることがあります。

  • フルカラーLED(NeoPixel/WS2812)の場合: 表面に小さな黒い四角形があり、中に黄色い丸が見える素子が載っているなら、それは「通信」で色を指定するタイプのLEDです。この場合、専用のライブラリ(Adafruit NeoPixelなど)を使わないと1ミリも光りません。
  • 負論理(Active Low)の場合: 「HIGHで点灯」ではなく「LOWで点灯」する回路になっているボードもあります。この場合、プログラムを書き換えて HIGHLOW を逆にしてみると、ずっと消えていたLEDが光り出すことがあります。

まとめ:自分のボードの「正解」をメモしよう

「書き込み成功=動作成功」とならないのが、ハードウェア制御の難しくも面白いところです。

一度自分のボードで「どのピンが正解か」が分かったら、ボードの裏側に「LED:8」などと書いておくのが、未来の自分への一番のプレゼントになります。

(個人的には、内蔵LEDくらいはピンを統一してほしいものです。)

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero

関連記事

環境構築・ESP32のセットアップからLチカまで

esp32をaruduinoで開発する。開発閑居のセットアップガイド記事サムネイル

【Arduino IDE】ESP32の開発環境セットアップ

ESP32の開発環境をArduino IDEで構築する手順を徹底解説!最新のUSB Type-C搭載ボード(ESP32-C3など)に対応し、ボードマネージャーの設定から「Lチカ」成功までをステップバイステップで紹介します。初心者でも迷わず進められるよう、データ転送用ケーブルの注意点やピン番号の指定方法も網羅しました。