All tutorials

1 · First steps

Blink without delay() (millis)

Advanced20 min

Goal

Replace delay() with a time comparison based on millis().

Why it matters

delay() freezes the whole program. millis() lets you do several things at once.

What you need

  • Arduino UNO board
  • 5 mm LED
  • 220 Ω resistor
  • Piezo buzzer

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

Steps

  1. 01Declare unsigned long previous = 0; and const long interval = 1000;
  2. 02In loop(), compare millis() - previous >= interval.
  3. 03Toggle the LED state and update previous.
  4. 04Check that no delay() is left.

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, 5 mm LED, 220 Ω resistor, Piezo buzzer. They are already available in the simulator library.
How long does it take?
About 20 minutes, advanced level, in 4 guided steps.
What should I know before starting?
The previous tutorial in the series, “SOS message in Morse code”, 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