Reading analog data
We mentioned earlier that the Arduino takes in digital data, which means that it can only handle numbers.
But what can we do for cases when we have an infinite number of possibilities, like light levels which cannot be quantified as a 0 or a 1, or ON and OFF?
Data like these which are continuous in nature, and do not have discrete or distinct levels are known as analog data. These signals in terms of voltage do not exist only at 0V or 5V, but vary between these two levels.
How do we go about reading such a continuous data then? Worry not, and remember, for all our problems, there's always a solution, we only need to think harder and explore.
ADC to the rescue!
An ADC, or an Analog-to-Digital converter is a circuit that converts voltages that are analog in nature to digital form.
The Arduino Uno has a 10 bit ADC inside it, which means it can convert an analog input voltage range, 0 to 5 volts, to a digital value between 0 and 1023 (2^10, hence 10-bit!).
The following table shows...