aboutsummaryrefslogtreecommitdiffstats
path: root/source/lang/api/digitalwrite.rst
blob: 6124d5fc2d3b53863d49634d0a4598222ff5fbd1 (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
.. highlight:: cpp

.. _lang-digitalwrite:

digitalWrite()
==============

Write a :ref:`HIGH <lang-constants-high>` or a :ref:`LOW
<lang-constants-low>` value to a pin configured as :ref:`OUTPUT
<lang-constants-output>`.

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

.. doxygenfunction:: digitalWrite

Discussion
----------

If the pin has been configured as an ``OUTPUT`` with :ref:`pinMode()
<lang-pinmode>` its voltage will be set to the corresponding value:
3.3V for ``HIGH``, and 0V (ground) for ``LOW``.

.. TODO make the following paragraphs true, but refer the reader to
.. INPUT_PULLUP and INPUT_PULLDOWN:

If the pin is configured as an ``INPUT``, writing a ``HIGH`` value
with ``digitalWrite()`` will enable an internal pullup resistor.
Writing ``LOW`` will disable the pullup. The pullup resistor is enough
to light an LED dimly, so if LEDs appear to work, but very dimly, this
is a likely cause. The remedy is to set the pin to an output with the
:ref:`pinMode() <lang-pinmode>` function.

.. note:: Pin 13 is harder to use as an input than the other pins
   because it has an LED and resistor soldered to it in series. If you
   enable its internal pull-up resistor, it will likely hang at around
   1.1V instead of the expected 3.3V because the onboard LED and
   series resistor pull the voltage level down. If you must use pin 13
   as a digital input, use an external pull-down resistor.

Example
-------

The following example sets pin 13 to ``HIGH``, makes a one-second-long
delay, sets the pin back to ``LOW``, and delays again, causing a
blinking pattern::


    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
    }

See Also
--------

- :ref:`pinMode <lang-pinmode>`
- :ref:`digitalRead <lang-digitalread>`

.. include:: cc-attribution.txt