|
| 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 |
0 commit comments