Arduino Input Pin Characteristics

All Arduino "Digital" and "Analog" pins CAN be used as digital Inputs and Outputs. Here we are discussing the use of pins as DIGITAL INPUTS.

Usually we expect to connect devices that are "Digital Outputs" to our Arduino "Digital Inputs" and we don't worry too much about it. But sometimes we really need to know what Arduino "Sees" as a LOW signal (Also known as 0 ) or HIGH (Also known as 1).

An input voltage of "High Enough" (close to 5V) is seen by Arduino as HIGH or 1. And an input voltage of "Low Enough" (Close to 0V) is seen as LOW or 0. But there is a "no-man's land" in between that can be a problem. Here are the range of voltages and what Arduino interprets them as:

5.0V (Arduino power supply)
. Voltage range seen as "1"
2.65V (Input Threshold Voltage seen as "1" )
? Voltage Range seen as "UNKNOWN .. UNDECIDED"
2.10V (Input Threshold Voltage seen as "0" )
. Voltage Range seen as "0"

Interfacing 5V Arduino to 3.3V Devices:

Most 3.3V devices put out signals which are almost 3.3V at "1" and almost 0.0V at "0". So you can see that a 3.0V signal is greater than 2.65 and will be seen OK as a "1". And a 0.0 or 0.5V signal is less than 2.10V and will be seen OK as a "0".

Uh-Oh, what about Arduino Outputs?
You need to check! Some devices are "5 V tolerant", some are not. Sometimes you need to add series resistors between the Arduino 5V Output and the other device 3.3V Input. Sorry, there is no universal answer.

Running "Arduinos" at other voltages:

If you are running an Arduino, Teensy, or other variant powered by 3.3V or some other voltage, you need to see the detailed data sheet HERE, or look at the following graphs: