Pins configured as INPUT

Pins configured as INPUT with 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 MΩ in front of the pin. This makes them useful for reading a sensor. 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Ω 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. 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. 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 Instead of using pull-up resistors one can use INPUT_PULLUP mode. 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 (3.3V).