# Documentation for HIGH and LOW voltage levels doesn't seem right to me

Documentation here (https://www.arduino.cc/en/Reference/Constants) states an input is HIGH if:

a voltage greater than 3 volts is present at the pin (5V boards);
a voltage greater than 2 volts is present at the pin (3.3V boards);

and LOW if:

a voltage less than 3 volts is present at the pin (5V boards);
a voltage less than 2 volts is present at the pin (3.3V boards);

This doesn’t look quite right to me. The most recent ATmega328 datasheet from 11/2016 (http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf) says in Table 32-2 (pg. 365) that V_IH is 0.6Vcc for Vcc = 2.4 to 5.5V, and that V_IL is 0.3Vcc for Vcc = 2.4 to 5.5V.

Can we please update the documentation to update this? Or am I wrong?

I recommend we make the documentation say:

------------start of documentation-------------

An input is read as HIGH if the voltage is > 0.6 x Vcc, and LOW if the voltage is < 0.3 x Vcc, for Vcc voltage levels ranging from 2.4V to 5.5V. Reference the ATmega328 datasheet, revision 11/2016, Table 32-2, pg. 365.

That equates to the following:

HIGH if
-a voltage greater than 0.6 x 5 = 3.0V is present at the pin (5V boards);
-a voltage greater than 0.6 x 3.3 = 1.98V is present at the pin (3.3V boards);

and LOW if:

-a voltage less than 0.3 x 5 = 1.5V is present at the pin (5V boards);
-a voltage less than 0.3 x 3.3 = 0.99V is present at the pin (3.3V boards);

------------end of documentation--------------

In other words, the LOW values written in the current Arduino online documentation are all messed up, and what I’ve stated above is right, right?

The datasheet values are for "guaranteed" operation, while the Arduino documentation is a simplification.
What would you have the documentation say for voltages "in between" 0.3Vcc and 0.6Vcc ? Remember, it's supposed to be for people without any electronics background...

For the range 0.3Vcc and 0.6Vcc I'd say it's undefined, and could come out either way, though the lower you are the more likely it is to come out LOW and the higher you are the more likely it is to come out HIGH. I think it's important to be as correct as possible. Arduino isn't just for beginners.

Addendum:...and providing this information is how we bridge the gaps between beginners and experts, to help beginners become experts.