All tutorials

2 · Inputs & sensors

Toggle button (debounced)

Intermediate20 min

Goal

One press turns on, the next turns off — with no contact bounce.

Why it matters

A mechanical contact bounces for ~10 ms: without filtering, one press counts as ten.

What you need

  • Arduino UNO board
  • Push button

Nothing to buy: every component below is simulated in the browser.

Steps

  1. 01Store the previous button state (lastState).
  2. 02Detect the falling edge HIGH → LOW.
  3. 03Ignore changes happening less than 50 ms after the previous one (millis()).
  4. 04Toggle a boolean ledOn and apply it.

This tutorial runs inside the Circuitly simulator: your wiring and your code are checked automatically at every step.

Frequently asked questions

Do I need to buy hardware for this tutorial?
No. Everything runs in the browser: Circuitly simulates the board, the components and the code. Real hardware is optional if you want to rebuild the circuit afterwards.
Which components are used?
Arduino UNO board, Push button. They are already available in the simulator library.
How long does it take?
About 20 minutes, intermediate level, in 4 guided steps.
What should I know before starting?
The previous tutorial in the series, “Read a push button”, is enough preparation. No software install is required.
Is the code provided and checked?
The simulator checks your wiring and your code automatically at every step, and shows the commented solution if you get stuck.

For teachers

Get the teaching pack: 6 ready-to-run sessions

Full progression, objectives, student steps and an assessment grid — printable, free.

One address, no spam: just the pack and classroom updates.

In the same series

Explore other topics