aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/lang/api/delaymicroseconds.rst
blob: 70786605c3594e3390dcafd81070e3ddd0c76b8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
.. highlight:: cpp

.. _lang-delaymicroseconds:

delayMicroseconds()
===================

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
---------------------

.. doxygenfunction:: delayMicroseconds


Example
-------

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
:ref:`lang-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
--------

-  :ref:`millis <lang-millis>`
-  :ref:`micros <lang-micros>`
-  :ref:`delay <lang-delay>`

.. include:: /arduino-cc-attribution.txt