aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/arduino/delay.rst
blob: 973c75b5277af5a654ab1d3fb9f5747e1b8abe05 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
.. _arduino-delay:

delay()
=======

Description
-----------

Pauses the program for the amount of time (in miliseconds)
specified as parameter. (There are 1000 milliseconds in a second.)



Syntax
------

delay(ms)



Parameters
----------

ms: the number of milliseconds to pause (*unsigned long*)



Returns
-------

nothing



Example
-------

::

    int ledPin = 13;                 // LED connected to digital 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
    }



Caveat
------

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() <http://arduino.cc/en/Reference/Millis>`_ function and
the sketch sited below. More knowledgeable programmers usually
avoid the use of delay() for timing of events longer than 10's of
milliseconds unless the Arduino sketch is very simple.



Certain things *do* go on while the delay() function is controlling
the Atmega chip however, because the delay function does not
disable interrupts. Serial communication that appears at the RX pin
is recorded, PWM
(`analogWrite <http://arduino.cc/en/Reference/AnalogWrite>`_)
values and pin states are maintained, and
`interrupts <http://arduino.cc/en/Reference/AttachInterrupt>`_ will
work as they should.



See also
--------


-  `millis <http://arduino.cc/en/Reference/Millis>`_\ ()
-  `micros <http://arduino.cc/en/Reference/Micros>`_\ ()
-  `delayMicroseconds <http://arduino.cc/en/Reference/DelayMicroseconds>`_\ ()
-  `Blink Without Delay <http://arduino.cc/en/Tutorial/BlinkWithoutDelay>`_
   example