user4270: How do the analog pins on an Arduino measure voltage?
Do they either measure current and calculate the voltage with Ohm's law? (If so, why can we only read voltage and not current directly?)
Or do they compare the unknown input voltage with a known internal one? (If so, how does that work? What's the known voltage?)

user8175: Known voltage is usually provided by a diode or similar reference. The atmega328p chip has a separate aref pin so you can choose your own reference. 
An ADC or analog to digital converter http://en.m.wikipedia.org/wiki/Analog-to-digital_converter is a collection of comparators. A comparator is a logic gate that simply tells which of two inputs has more voltage. This aref voltage is divided evenly into 2^10 values (it's a 10 bit ADC). Then the incoming signal is compared against all of these and the largest comparator which triggers is the reading you get in your arduino code. 

user8420: The Arduino uses a 10 bit Analog to Digital Converter(ADC). A good ADC  is made such that it has only as many comparators as is the resolution of the ADC (in BITS) . Therefore the Arduino should have only ten comparators.
More detailed:
Comparator Number      Trigger voltage
        1.(LSB)..............................       (5/1024)V
        2........................................             (5/512)V 
        3........................................(5/256)V
       ..........and so on till
        4.(MSB)..............................(5/2)V
So, for a voltage of say 2.75V, you will get a value of 768(11000000 in Binary)
Update:If you choose to give and use a separate Ref Voltage to the Arduino, It replaces the 5V with the new ref voltage.
Update 2: Sometimes a single comparator may be used in exchange of all 10 comparators.i.e., it is used to trigger all the bits .But the voltage at which each bit is triggered remains same.

4270: <p><em>How do the analog pins on an Arduino measure voltage?</em></p>

<p>Do they either measure current and calculate the voltage with Ohm's law? (If so, why can we only read voltage and not current directly?)</p>

<p>Or do they compare the unknown input voltage with a known internal one? (If so, how does that work? What's the known voltage?)</p>
 8175: <p>Known voltage is usually provided by a diode or similar reference. The atmega328p chip has a separate aref pin so you can choose your own reference. </p>

<p>An ADC or analog to digital converter <a href="http://en.m.wikipedia.org/wiki/Analog-to-digital_converter" rel="nofollow">http://en.m.wikipedia.org/wiki/Analog-to-digital_converter</a> is a collection of comparators. A comparator is a logic gate that simply tells which of two inputs has more voltage. This aref voltage is divided evenly into 2^10 values (it's a 10 bit ADC). Then the incoming signal is compared against all of these and the largest comparator which triggers is the reading you get in your arduino code. </p>
 8420: <p>The Arduino uses a <b>10 bit <I>Analog to Digital Converter(ADC)</I></b>. A good ADC  is made such that it has only as many comparators as is the resolution of the ADC (in BITS) . Therefore the Arduino should have only ten comparators.<br>
More detailed:<br>
Comparator Number      Trigger voltage<br>
        1.(LSB)..............................       (5/1024)V<br>
        2........................................             (5/512)V<br> 
        3........................................(5/256)V<br>
       ..........and so on till<br>
        4.(MSB)..............................(5/2)V<br><br>
So, for a voltage of say 2.75V, you will get a value of 768(11000000 in Binary)</p>

<p>Update:If you choose to give and use a separate Ref Voltage to the Arduino, It replaces the 5V with the new ref voltage.<br>
Update 2: Sometimes a single comparator may be used in exchange of all 10 comparators.i.e., it is used to trigger all the bits .But the voltage at which each bit is triggered remains same.</p>
