esatto per il fatto che hai precisione da 1023 step.
Ogni step è una variazione dettata da vari settaggi. nomralmente si usa a 5V, quindi ogni step è una differenza di 5V/1024=0.004V
però puoi leggere "solo" voltaggi da 0 a 5v. Se vuoi leggere voltaggi più bassi puoi mettere su aref un voltaggio di riferimento più basso (e impostare l'alanogread su external); per esempio se la setti a 3,3v, avrai 3.3/1024=0.003V per ogni passo.
però il sendore deve essere in grado di darti questa precisione, altrimenti leggi solo rumore!!
per esempio il MB7060, il datasheet dice:
The low power 3.0V to 5.5V operation detects objects from 0-cm
to 765-cm (25.1 feet) and provides sonar range information from 20-cm out to765-cm with 1-cm
resolution
quindi precisione di 1cm, indipendentemente dal tuo ADC più di così non leggi niente.
poi dice:
Pin 2 - MB7060 (PW) This pin outputs a pulse width representation of
range. To calculate distance, use the scale factor of 58uS per cm.
MB7070 (AE) This pin outputs the analog voltage envelope of the
acoustic wave form
58uS per cm, mentre noi abbiamo una precisione di 4uS (il timer di arduino aumenta di 4uS in 4uS, senza contare la lentezza del codice), ciò vuol dire che il tuo codice se un pò lento rischia di farti perdere precisione.
Pin 3 - (AN) This pin outputs analog voltage with a scaling factor of
(Vcc/1024) per cm. A supply of 5V yields ~4.9mV/cm., and 3.3V yields
~3.2mV/cm. Hardware limits the maximum reported range on this output
to ~700 cm at 5V and ~600 cm at 3.3V. The output is buffered and
corresponds to the most recent range data
ecco l'uscita analogica: per caso ha la stessa precisione dell'arduino, ovvero 10bit! peccato che il cavo che collega il pin arduino e del sensore è (come tutti i cavi) un'antenna, e quindi se l'ambiente è "rumoroso" (ponte che fa da antenna gigante?) avrai un errroe.. senza contare che le letture sono sempre un poco oscillanti. Quindi direi di evitare
Pin 5 - (TX) When Pin 1 is open or held high, the Pin 5 output delivers
asynchronous serial with an RS232 format, except voltages are 0-Vcc.
The output is an ASCII capital “R”, followed by three ASCII character
digits representing the range in centimeters up to a maximum of 765,
followed by a carriage return (ASCII 13). The baud rate is 9600, 8 bits,
no parity, with one stop bit. Although the voltage of 0-Vcc is outside the
RS232 standard, most RS232 devices have sufficient margin to read 0-
Vcc serial data. If standard voltage level RS232 is desired, invert, and
connect an RS232 converter such as a MAX232.
When Pin 1 is held low, the Pin 5 output sends a single pulse, suitable for
low noise chaining (no serial data).
eccoci! ci dice che la RS232 parla da 0Va vcc (quindi se alimntiamo il sensore a 5v, avremmo una seriale che parla come l'arduino!) che ci scriverà 'R' e tre numeri che sono la distanza già in centimetri! (esempio: R015 (15cm) o R125 (125cm) )
baud rate is 9600, 8 bits,no parity, with one stop bit
esattamente lo stesso standard che usa arduino di base! perfetto direi