It's always nice to test these ideas. I made up a test sketch:
void setup ()
{
Serial.begin (115200);
Serial.println ();
} // end of setup
void loop ()
{
for (int whichPort = A0; whichPort <= A2; whichPort++)
{
Serial.print ("Analog port = ");
Serial.print (whichPort);
// analogRead (whichPort); // dummy read
int result = analogRead (whichPort);
Serial.print (", result = ");
Serial.println (result);
}
Serial.println ();
delay (1000);
} // end of loop
That switches between A0 and A2, reading the voltages there. I had on them:
- A0 = 2.5V
- A1 = 5V
- A2 = 3.3V
The readings therefore should be:
- A0 (14) = 511
- A1 (15) = 1023
- A2 (16) = 675
What I got with the above sketch was:
Analog port = 14, result = 509
Analog port = 15, result = 1023
Analog port = 16, result = 674
Analog port = 14, result = 509
Analog port = 15, result = 1023
Analog port = 16, result = 670
Analog port = 14, result = 508
Analog port = 15, result = 1023
Analog port = 16, result = 673
Analog port = 14, result = 507
Analog port = 15, result = 1023
Analog port = 16, result = 673
Analog port = 14, result = 508
Analog port = 15, result = 1023
Analog port = 16, result = 675
Slight variations, but it seemed to handle switching ports OK.
Now by uncommenting the dummy read, we can see if it increases accuracy:
Analog port = 14, result = 507
Analog port = 15, result = 1023
Analog port = 16, result = 675
Analog port = 14, result = 505
Analog port = 15, result = 1023
Analog port = 16, result = 675
Analog port = 14, result = 506
Analog port = 15, result = 1023
Analog port = 16, result = 676
Analog port = 14, result = 506
Analog port = 15, result = 1023
Analog port = 16, result = 675
Analog port = 14, result = 507
Analog port = 15, result = 1023
Analog port = 16, result = 673
There isn't much, if any, difference, so I would say the dummy read is not necessary.