Skip to content

Button-controlled LED

Press a pushbutton to light an LED. Discover why an input pull-up makes a pressed button read LOW.

Button-controlled LED: the matching Arduino Uno circuit rendered in Circuitera’s simulator
Matching Circuitera simulator circuit. Real firmware capture; modeled components are idealized.

Wire it up

Disconnect power before changing connections. Follow terminal names rather than wire colors.

FromToWhy it matters
Uno · 13Resistor (r-led1) · 1Match this terminal to the sketch
Resistor (r-led1) · 2LED (led1) · AMatch this terminal to the sketch
LED (led1) · CUno · GND.1Ground reference
Pushbutton (button1) · 1.lUno · 2Match this terminal to the sketch
Pushbutton (button1) · 2.lUno · GND.2Ground reference

The complete sketch

button-led.ino
void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
}
void loop() {
  digitalWrite(13, digitalRead(2) == LOW);
}

The launch buttons use this same code and a matching saved circuit.

Build it step by step

  1. Open a complete project

    Launch in Simulator creates a separate Uno sketch and its matching wired circuit. Existing sketches are preserved. Press Run to compile and execute.

  2. Explore the live circuit

    Press and release the simulated pushbutton. The LED should follow it immediately.

  3. Try it on hardware

    Disconnect power while wiring. Match terminal names in the table, select the exact board, Verify, then connect and upload. Check component ratings and power requirements first.

Understand the sketch

Active-low input

INPUT_PULLUP holds D2 high when the button is open. Pressing it connects D2 to ground; the comparison turns that LOW reading into an LED-on command.

If something is different

LED always on

Connect opposite button contacts, 1.l and 2.l. The two terminals on the same contact are already joined.

Expected output and tested scope

With INPUT_PULLUP, pressing the button pulls the input LOW and turns on the LED; releasing it turns the LED off.

Version 1 · Last source- and build-matched test: 2026-10-25. Actual shipped AVR-GCC WASM compilation and Uno AVR engine execution; no physical hardware test.

Supported tutorial target: Arduino Uno R3 / ATmega328P. Compile: PASS · Modeled execution: PASS. Other boards require a separate review of pins, voltage, libraries and the exact build profile.

Keep exploring.