What are the AREF, IOREF, and the unlabeled pin next to IOREF on the Uno R3?

AREF:

This is the voltage reference analog-to-digital converter (ADC). It can be used instead of the standard 5V reference for the top end of the analog spectrum – for example, if you wanted to use the ADC to monitor a signal that had a 0-1.5 volt range you could get the full scale of the ADC by connect AREF to a 1.5V signal. DO NOT CONNECT A SIGNAL OUTSIDE THE 0V TO 5V RANGE!

Note that in order for this to work, you must run analogReference(EXTERNAL); before using analogRead(). Also:

After changing the analog reference, the first few readings from analogRead() may not be accurate.

Fore more information, see AnalogReference.

IOREF:

This is a voltage corresponding to the i/o of that board, for example an Uno would supply 5v to this pin, but a Due would supply 3.3v. Sending a signal to this pin does nothing.

Unlabeled pin:

This pin is unused, but is there to ensure compatibility with future products. It is not connected to anything on any R3 boards I have seen.


Concerning the AREF pin, you have to remember that the Arduino comes with a 10bit ADC (Analog-Digital-Converter), which converts incoming voltages between 0V and 5V to integer values between 0 and 1023. This results in a resolution of roughly 4.8 mV.

If a sensor only delivers a lower maximum voltage, it is resonable to apply this voltage to the AREF pin, just in order to obtain a higher resolution.