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.
AND: There are both "Typical" and "Guaranteed" voltage levels. Sheesshhh...
Range of Digital Input Voltages and how Arduino interprets them
5.0V (Arduino power supply)
Voltage range seen as "1":
2.65V to 5.0V (Input Threshold Voltage seen as "1" )
Voltage Range seen as "UNKNOWN .. UNDECIDED"
1.80V to 2.65V
(Input Threshold Voltage seen as "0" )
1.80V to 0.0V
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 look at the following graphs: