【プログラム】NodeMCUを使ってLチカ

Osoyoo社のNodeMCU ESP2866系 NodeMCU(ESP-12F搭載)

Osoyoo社のNodeMCU(ESP-12Fチップを搭載したESP8266)でGPIO4のピンを使ってLEDを点滅させる(Lチカ)Arduino IDE用のサンプルコードと解説です。
IDEセットアップ方法

Arduino IDE用Lチカ(内臓青色LED編)

以下のコードをArduino IDEにコピー&ペーストして、ESP8266ボードに書き込んでください。

/*
  ESP8266 Blink by Simon Peter
  ESP-01モジュールの青色LEDを点滅させる
  このサンプルコードはパブリックドメインです。

  ESP-01モジュールの青色LEDはGPIO1に接続されています。
  (これはシリアル通信のTXDピンでもあるため、Serial.print()を同時に使用することはできません)

  このスケッチでは、LED_BUILTIN を使って内蔵LEDのピン番号を指定しています。
*/

// setup()関数:電源投入後やリセット後に一度だけ実行される初期設定用の関数です。
void setup() {
  // pinMode()関数で、LEDが接続されているピンのモードを設定します。
  // LED_BUILTIN:多くのボードで内蔵LEDが接続されているピン番号を指す定数です。
  // OUTPUT:このピンを「出力モード」に設定し、電圧をHIGHまたはLOWに制御できるようにします。
  pinMode(LED_BUILTIN, OUTPUT);
}

// loop()関数:setup()関数の実行後、繰り返し永続的に実行されるメインの関数です。
void loop() {
  // digitalWrite()関数で、指定したピンの電圧をHIGHまたはLOWに設定します。
  // ESP-01のLEDは「アクティブLOW」という方式で、LOWにすると点灯します。
  digitalWrite(LED_BUILTIN, LOW);   // LEDを点灯させる(電圧レベルはLOW)

  // delay()関数で、指定したミリ秒だけプログラムの実行を一時停止します。
  delay(1000);                      // 1000ミリ秒(1秒)待つ

  // 電圧をHIGHにすることでLEDを消灯させます。
  digitalWrite(LED_BUILTIN, HIGH);  // LEDを消灯させる(電圧レベルはHIGH)

  // 点灯時間と消灯時間を変えることで、動作を確認しやすくしています。
  delay(2000);                      // 2000ミリ秒(2秒)待つ
}

Arduino IDE用Lチカ(GPIO4番ピンLED編)

// 使用するピン番号を定義します
const int ledPin4 = 4;   // GPIO4

void setup() {
  // 各ピンを出力モードに設定します
  pinMode(ledPin4, OUTPUT);
}

void loop() {
  // 両方のLEDを点灯させます (HIGH)
  digitalWrite(ledPin4, HIGH);
  delay(1000); // 1秒待機

  // 両方のLEDを消灯させます (LOW)
  digitalWrite(ledPin4, LOW);
  delay(1000); // 1秒待機
}

回路図

このコードを使用するには、以下のようにESP8266とLEDを配線します。

  • GPIO4 → 抵抗 (220Ω〜330Ω程度) → LEDの長い足(アノード)→ LEDの短い足(カソード)→ GND
  • GPIO10 → 抵抗 (220Ω〜330Ω程度) → LEDの長い足(アノード)→ LEDの短い足(カソード)→ GND

コードの解説

  • const int ledPin4 = 4;const int ledPin10 = 10;
    • 使用するGPIOピンの番号を変数として宣言しています。これにより、後からピン番号を変更するのが簡単になります。
  • setup() 関数
    • pinMode(ledPin4, OUTPUT);pinMode(ledPin10, OUTPUT); で、指定したピンを「出力モード」に設定します。これはLEDを光らせるために必要な設定です。
  • loop() 関数
    • digitalWrite(ledPin4, HIGH);digitalWrite(ledPin10, HIGH); で、ピンに電圧をかけてLEDを点灯させます。
    • delay(1000); は、プログラムを1000ミリ秒(=1秒)間停止させます。
    • digitalWrite(ledPin4, LOW);digitalWrite(ledPin10, LOW); で、ピンの電圧を下げてLEDを消灯させます。
    • loop()関数の中身は繰り返し実行されるため、LEDが1秒間隔で点滅し続けます。

⚠️ 注意点

GPIO端子番号について: ESP8266のボード(特にNodeMCUなど)によっては、GPIO端子に特別な役割を持っているため、安全で問題が起きにくい以下のGPIO番号の端子を使ってください。

  • GPIO4 (D2)
  • GPIO5 (D1)
  • GPIO12 (D6)
  • GPIO13 (D7)
  • GPIO14 (D5)

コメント