aboutsummaryrefslogtreecommitdiffstats
path: root/source/lang/api/delay.rst
blob: 30bd436740d3fd7f7fcf604aed612064b165a8ef (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
63
64
65
66
67
68
69
.. highlight:: cpp

.. _lang-delay:

delay()
=======

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

Library Documentation
---------------------

.. doxygenfunction:: delay


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 :ref:`millis() <lang-millis>` function
and the "Blink Without Delay" sketch cited :ref:`below
<lang-delay-seealso>`\ . 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 :ref:`pwmWrite() <lang-pwmwrite>`\ ) values
and pin states are maintained, and :ref:`interrupts
<lang-attachinterrupt>` will work as they should.


Example
-------

::

    void setup() {
        // set up the built-in LED pin for output:
        pinMode(BOARD_LED_PIN, 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
    }

.. _lang-delay-seealso:

See Also
--------

- :ref:`millis() <lang-millis>`
- :ref:`micros() <lang-micros>`
- :ref:`delayMicroseconds() <lang-delayMicroseconds>`
- (Arduino) `Blink Without Delay
  <http://arduino.cc/en/Tutorial/BlinkWithoutDelay>`_ example (works
  unmodified on Maple)

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