Pauses the program for the amount of time (in microseconds) specified as parameter. There are a thousand microseconds in a millisecond, and a million microseconds in a second.

Library Documentation

void delayMicroseconds(uint32 us)

Delay for at least the given number of microseconds.

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

  • us -

    the number of microseconds to delay.




The following example configures pin number 8 to work as an output pin, and sends a train of pulses with a period of roughly 100 microseconds:

int outPin = 8;

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

void loop() {
  digitalWrite(outPin, HIGH);   // sets the pin on
  delayMicroseconds(50);        // pauses for 50 microseconds
  digitalWrite(outPin, LOW);    // sets the pin off
  delayMicroseconds(50);        // pauses for 50 microseconds

Caveats and Known Issues

The longest time delayMicroseconds() can delay is bounded by its argument type and the STM32 clock rate to be (2^32 - 1) / 12 microseconds, or less than 6 minutes. For longer pauses, use of delay() is possible.

Arduino Compatibility

While we have made every effort we could to ensure that the timing of delayMicroseconds() is as accurate as possible, we cannot guarantee it will behave as the Arduino implementation down to the microsecond, especially for smaller values of us.

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.