Pauses the program for at least a given number of milliseconds. (There are 1000 milliseconds in a second.)

Library Documentation

void delay(unsigned long ms)

Delay for at least the given number of milliseconds.

Interrupts, etc. may cause the actual number of milliseconds to exceed ms. However, this function will return no less than ms milliseconds from the time it is called.

  • ms -

    the number of milliseconds to delay.




While it is easy to create a blinking LED with the delay() function, and many sketches use short delays for such tasks as switch debouncing, the use of delay() in a sketch has significant drawbacks. No other reading of sensors, mathematical calculations, or pin manipulation can go on during the delay function, so in effect, it brings most other activity to a halt. For alternative approaches to controlling timing see the millis() function and the “Blink Without Delay” sketch cited below. More knowledgeable programmers usually avoid the use of delay() for timing of events longer than tens of milliseconds, unless the sketch is very simple.

Certain things do go on while the delay() function is controlling the STM32 chip, however, because the delay function does not disable interrupts. Serial communication that appears at the RX pin is recorded, PWM (see pwmWrite()) values and pin states are maintained, and interrupts will work as they should.


void setup() {
    // set up the built-in LED pin for output:

void loop() {
    digitalWrite(BOARD_LED_PIN, HIGH);   // sets the LED on
    delay(1000);                         // waits for a second
    digitalWrite(BOARD_LED_PIN, LOW);    // sets the LED off
    delay(1000);                         // waits for a second

See Also

License and Attribution

Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.