Built-in project · ESP32-C3-DevKitM-1

ESP32-C3 blink

An LED on GPIO 8, driven by real firmware. The whole build, an ESP32-C3 and 2 more parts, runs here in your browser on the firmware below; open it in the editor to change the wiring or the code and run it again.

Teaching? Assign it to your class in one click.

Beginner About 10 minutes to build and run. Runs in your browser. Free, and no account needed.

The parts retail for about $13.15. On Mokxi they're free.

The circuit runs here once the page has loaded.

What you'll learn

  • Blinking an LED with digitalWrite and delay
  • What LED_BUILTIN means on different boards
  • Why an LED needs a series resistor
  • Setting a pin as an output
  • Difficulty: Beginner
  • Time: About 10 minutes
  • Board: ESP32-C3-DevKitM-1
  • Parts: 4

How it works

The ESP32-C3-DevKitM-1 has its LED on GPIO 8, and the sketch refers to it as LED_BUILTIN. You also wire an external blue LED from GPIO 8 through a 220 ohm resistor to ground, so you can see it on the breadboard.

The sketch turns the pin on for half a second and off for half a second, forever.

Parts list

4 parts, plus the jumper wires. They retail for about $13.15; on Mokxi they're free.

Wiring table

Every connection, pin by pin, read from the circuit itself. Each row joins the pin on the left to the pin on the right, by a jumper wire or a breadboard strip.

Part and pinConnects to
LED, blue pin CESP32-C3-DevKitM-1 pin GND
Resistor, 220 Ω pin 1ESP32-C3-DevKitM-1 pin 8
LED, blue pin AResistor, 220 Ω pin 2

The code

The firmware exactly as the editor opens it. Change a line there and press Run: it compiles in the browser.

sketch.ino · ESP32-C3-DevKitM-1
// Blink: the smallest thing a board can do.
//
// GPIO 8 is the LED on the ESP32-C3-DevKitM-1, so LED_BUILTIN is 8. Wire an
// LED and a resistor from GPIO 8 to GND to see it on the breadboard too.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

Code walkthrough

The key functions of the sketch, and what each one does.

setup sketch.ino

Runs once at start. pinMode(LED_BUILTIN, OUTPUT) makes GPIO 8 an output, so the sketch can drive the LED.

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

loop sketch.ino

Runs over and over. digitalWrite(LED_BUILTIN, HIGH) lights the LED, delay(500) waits half a second, then LOW turns it off and another delay(500) waits. Change the 500s to blink faster or slower.

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}

Troubleshooting

The usual mistakes with this circuit, and the fix for each.

  • The breadboard LED does not light This project
    Flip the LED around. The anode (longer leg) goes toward the resistor and the cathode to GND.
  • The LED is dim, burns out, or the pin reads wrong because the resistor value is off. Resistor
    Read the color bands again. A 220 ohm to 330 ohm resistor suits a typical LED on 5 V. 10k is a common pull-up or pull-down value. Check with a multimeter if unsure.
  • A pull-up or pull-down resistor is missing, so the input floats and reads random values. Resistor
    Tie the input to 5 V or ground through about 10k. Or use INPUT_PULLUP and wire the switch to ground.
  • The LED does not light, or it lights once and then dies. LED
    LEDs have polarity. The longer leg (anode) goes toward the positive side. Always add a series resistor, about 220 ohms to 1 k ohm on a 5 V pin.
  • A blue or white LED stays dark on 3.3 V. LED
    Blue and white LEDs drop about 3 V, so 3.3 V leaves almost nothing for the resistor. Use a 5 V supply, or a smaller resistor and a red or green LED.
  • Upload fails or the board is not found by the computer. ESP32-C3-DevKitM-1
    Pick the ESP32-C3 board in your tools and the right port. If it still fails, hold BOOT, tap RESET, then release BOOT to enter download mode and try again.
  • GPIO pins act strangely or the board resets. ESP32-C3-DevKitM-1
    GPIO is 3.3 V only, so never feed it 5 V. GPIO 18 and 19 are USB, and GPIO 2, 8 and 9 are boot strapping pins. Avoid loading them at reset.

Change it and keep it

Open it in the editor, change the circuit or the code, and keep your version in a free account.