// ── NodeMCU ESP8266 v3 — Dual LED Blink ──────────────────────────────────────
// Blinks the onboard LED (D4 / GPIO2, active-LOW) and an external LED on D5.
// Shows both pin-label and GPIO-number styles — either works.
// ─────────────────────────────────────────────────────────────────────────────
// Using D-label macros (defined by esp8266 board package)
#define ONBOARD_LED D4 // GPIO 2 — active LOW
#define EXT_LED D5 // GPIO 14 — active HIGH
void setup() {
Serial.begin(115200);
delay(100); // Let serial settle
pinMode(ONBOARD_LED, OUTPUT);
pinMode(EXT_LED, OUTPUT);
// Start with both off
digitalWrite(ONBOARD_LED, HIGH); // HIGH = off for active-LOW LED
digitalWrite(EXT_LED, LOW);
Serial.println("
────────────────────────────────");
Serial.println("NodeMCU ESP8266 — Dual LED Blink");
Serial.printf("CPU: %d MHz | Free heap: %d B
",
ESP.getCpuFreqMHz(), ESP.getFreeHeap());
Serial.println("───────────────────────────────
");
}
void loop() {
// Phase A: onboard LED on, external off
digitalWrite(ONBOARD_LED, LOW); // LOW = ON (active-LOW)
digitalWrite(EXT_LED, LOW); // off
Serial.println("Onboard ON / External OFF");
delay(500);
// Phase B: onboard off, external on
digitalWrite(ONBOARD_LED, HIGH); // HIGH = OFF
digitalWrite(EXT_LED, HIGH); // HIGH = ON
Serial.println("Onboard OFF / External ON");
delay(500);
// Phase C: both on briefly
digitalWrite(ONBOARD_LED, LOW);
digitalWrite(EXT_LED, HIGH);
Serial.println("Both ON");
delay(200);
// Reset
digitalWrite(ONBOARD_LED, HIGH);
digitalWrite(EXT_LED, LOW);
delay(300);
}