delay()

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.

Parameters

  • ms -

    the number of milliseconds to delay.

See
delayMicroseconds()

Discussion

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.

Example

int ledPin = 13;                 // LED connected to pin 13

void setup() {
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

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

See also

License and Attribution

This documentation page was adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.