Skip to content

Commit 82354f0

Browse files
authored
Merge pull request #945 from arduino/karlsoderby/constants-fix
Constant Section Fixes
2 parents 206b767 + 06fce54 commit 82354f0

File tree

5 files changed

+212
-131
lines changed

5 files changed

+212
-131
lines changed

Language/Variables/Constants/constants.adoc

Lines changed: 0 additions & 131 deletions
This file was deleted.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: HIGH | LOW
3+
categories: [ "Variables" ]
4+
subCategories: [ "Constants" ]
5+
---
6+
7+
= HIGH | LOW
8+
9+
// OVERVIEW SECTION STARTS
10+
[#overview]
11+
--
12+
13+
[float]
14+
== Defining Pin Levels: HIGH and LOW
15+
When reading or writing to a digital pin there are only two possible values a pin can take/be-set-to: `HIGH` and `LOW`. These are the same as `true` and `false`, as well as `0` and `1`.
16+
17+
[float]
18+
=== HIGH
19+
The meaning of `HIGH` (in reference to a pin) is somewhat different depending on whether a pin is set to an `INPUT` or `OUTPUT`. When a pin is configured as an `INPUT` with `link:../../../functions/digital-io/pinmode[pinMode()]`, and read with `link:../../../functions/digital-io/digitalread[digitalRead()]`, the Arduino (ATmega) will report `HIGH` if:
20+
21+
- a voltage greater than 3.0V is present at the pin (5V boards)
22+
- a voltage greater than 2.0V is present at the pin (3.3V boards)
23+
[%hardbreaks]
24+
25+
A pin may also be configured as an INPUT with link:../../../functions/digital-io/pinmode[`pinMode()`], and subsequently made HIGH with `link:../../../functions/digital-io/digitalwrite[digitalWrite()]`. This will enable the internal 20K pullup resistors, which will _pull up_ the input pin to a `HIGH` reading unless it is pulled `LOW` by external circuitry. This can be done alternatively by passing `INPUT_PULLUP` as argument to the link:../../../functions/digital-io/pinmode[`pinMode()`] function, as explained in more detail in the section "Defining Digital Pins modes: INPUT, INPUT_PULLUP, and OUTPUT" further below.
26+
[%hardbreaks]
27+
28+
When a pin is configured to OUTPUT with link:../../../functions/digital-io/pinmode[`pinMode()`], and set to `HIGH` with link:../../../functions/digital-io/digitalwrite[`digitalWrite()`], the pin is at:
29+
30+
- 5 volts (5V boards)
31+
- 3.3 volts (3.3V boards)
32+
33+
In this state it can source current, e.g. light an LED that is connected through a series resistor to ground.
34+
[%hardbreaks]
35+
36+
[float]
37+
=== LOW
38+
39+
The meaning of LOW also has a different meaning depending on whether a pin is set to INPUT or OUTPUT. When a pin is configured as an INPUT with pinMode(), and read with digitalRead(), the Arduino (ATmega) will report LOW if:
40+
41+
a voltage less than 1.5V is present at the pin (5V boards)
42+
43+
a voltage less than 1.0V (Approx) is present at the pin (3.3V boards)
44+
45+
When a pin is configured to OUTPUT with pinMode(), and set to LOW with digitalWrite(), the pin is at 0 volts (both 5V and 3.3V boards). In this state it can sink current, e.g. light an LED that is connected through a series resistor to +5 volts (or +3.3 volts).
46+
47+
--
48+
// OVERVIEW SECTION ENDS
49+
50+
51+
// SEE ALSO SECTION BEGINS
52+
[#see_also]
53+
--
54+
55+
[float]
56+
=== See also
57+
58+
[role="language"]
59+
60+
--
61+
// SEE ALSO SECTION ENDS
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
---
2+
title: INPUT | INPUT_PULLUP | OUTPUT
3+
categories: [ "Variables" ]
4+
subCategories: [ "Constants" ]
5+
---
6+
7+
= INPUT | INPUT_PULLUP | OUTPUT
8+
9+
// OVERVIEW SECTION STARTS
10+
[#overview]
11+
--
12+
13+
[float]
14+
== Defining Digital Pins modes: INPUT, INPUT_PULLUP, and OUTPUT
15+
Digital pins can be used as `INPUT`, `INPUT_PULLUP`, or `OUTPUT`. Changing a pin with link:../../../functions/digital-io/pinmode[`pinMode()`] changes the electrical behavior of the pin.
16+
17+
--
18+
// OVERVIEW SECTION ENDS
19+
20+
// HOW TO USE SECTION STARTS
21+
[#howtouse]
22+
--
23+
24+
[float]
25+
=== INPUT
26+
Arduino (ATmega) pins configured as `INPUT` with link:../../../functions/digital-io/pinmode[`pinMode()`] are said to be in a _high-impedance_ state. Pins configured as `INPUT` make extremely small demands on the circuit that they are sampling, equivalent to a series resistor of 100 Megohms in front of the pin. This makes them useful for reading a sensor.
27+
[%hardbreaks]
28+
29+
If you have your pin configured as an `INPUT`, and are reading a switch, when the switch is in the open state the input pin will be "floating", resulting in unpredictable results. In order to assure a proper reading when the switch is open, a pull-up or pull-down resistor must be used. The purpose of this resistor is to pull the pin to a known state when the switch is open. A 10 K ohm resistor is usually chosen, as it is a low enough value to reliably prevent a floating input, and at the same time a high enough value to not draw too much current when the switch is closed. See the http://arduino.cc/en/Tutorial/DigitalReadSerial[Digital Read Serial^] tutorial for more information.
30+
[%hardbreaks]
31+
32+
If a pull-down resistor is used, the input pin will be `LOW` when the switch is open and `HIGH` when the switch is closed.
33+
[%hardbreaks]
34+
35+
If a pull-up resistor is used, the input pin will be `HIGH` when the switch is open and `LOW` when the switch is closed.
36+
[%hardbreaks]
37+
38+
[float]
39+
=== INPUT_PULLUP
40+
The ATmega microcontroller on the Arduino has internal pull-up resistors (resistors that connect to power internally) that you can access. If you prefer to use these instead of external pull-up resistors, you can use the `INPUT_PULLUP` argument in link:../../../functions/digital-io/pinmode[`pinMode()`].
41+
[%hardbreaks]
42+
43+
See the http://arduino.cc/en/Tutorial/InputPullupSerial[Input Pullup Serial^] tutorial for an example of this in use.
44+
[%hardbreaks]
45+
46+
Pins configured as inputs with either `INPUT` or `INPUT_PULLUP` can be damaged or destroyed if they are connected to voltages below ground (negative voltages) or above the positive power rail (5V or 3V).
47+
[%hardbreaks]
48+
49+
[float]
50+
=== OUTPUT
51+
Pins configured as `OUTPUT` with link:../../../functions/digital-io/pinmode[`pinMode()`] are said to be in a _low-impedance_ state. This means that they can provide a substantial amount of current to other circuits. ATmega pins can source (provide current) or sink (absorb current) up to 40 mA (milliamps) of current to other devices/circuits. This makes them useful for powering LEDs because LEDs typically use less than 40 mA. Loads greater than 40 mA (e.g. motors) will require a transistor or other interface circuitry.
52+
[%hardbreaks]
53+
54+
Pins configured as outputs can be damaged or destroyed if they are connected to either the ground or positive power rails.
55+
[%hardbreaks]
56+
57+
58+
--
59+
// HOW TO USE SECTION ENDS
60+
61+
62+
63+
// SEE ALSO SECTION BEGINS
64+
[#see_also]
65+
--
66+
67+
[float]
68+
=== See also
69+
70+
[role="language"]
71+
72+
--
73+
// SEE ALSO SECTION ENDS
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
title: LED_BUILTIN
3+
categories: [ "Variables" ]
4+
subCategories: [ "Constants" ]
5+
---
6+
7+
= LED_BUILTIN
8+
9+
// OVERVIEW SECTION STARTS
10+
[#overview]
11+
--
12+
13+
[float]
14+
== Defining built-ins: LED_BUILTIN
15+
Most Arduino boards have a pin connected to an on-board LED in series with a resistor. The constant `LED_BUILTIN` is the number of the pin to which the on-board LED is connected. Most boards have this LED connected to digital pin 13.
16+
17+
--
18+
// OVERVIEW SECTION ENDS
19+
20+
21+
// SEE ALSO SECTION BEGINS
22+
[#see_also]
23+
--
24+
25+
[float]
26+
=== See also
27+
28+
[role="language"]
29+
30+
--
31+
// SEE ALSO SECTION ENDS
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: 'true | false'
3+
categories: [ "Variables" ]
4+
subCategories: [ "Constants" ]
5+
---
6+
7+
= true | false
8+
9+
// OVERVIEW SECTION STARTS
10+
[#overview]
11+
--
12+
13+
There are two constants used to represent truth and falsity in the Arduino language: `true`, and `false`.
14+
15+
[float]
16+
=== true
17+
`true` is often said to be defined as 1, which is correct, but true has a wider definition. Any integer which is non-zero is true, in a Boolean sense. So -1, 2 and -200 are all defined as true, too, in a Boolean sense.
18+
[%hardbreaks]
19+
20+
Note that the `true` and `false` constants are typed in lowercase unlike `HIGH`, `LOW`, `INPUT`, and `OUTPUT`.
21+
[%hardbreaks]
22+
23+
24+
[float]
25+
=== false
26+
`false` is the easier of the two to define. false is defined as 0 (zero).
27+
[%hardbreaks]
28+
29+
Note that the `true` and `false` constants are typed in lowercase unlike `HIGH`, `LOW`, `INPUT`, and `OUTPUT`.
30+
[%hardbreaks]
31+
32+
--
33+
// OVERVIEW SECTION ENDS
34+
35+
36+
37+
// SEE ALSO SECTION BEGINS
38+
[#see_also]
39+
--
40+
41+
[float]
42+
=== See also
43+
44+
[role="language"]
45+
46+
--
47+
// SEE ALSO SECTION ENDS

0 commit comments

Comments
 (0)