The Uno has six analog inputs, A0 through A5. Each measures the voltage between it and the common ground (GND). The maximum input voltage is 5.0, and they have 10 bits of resolution. This means the 0-5V total range is divided into 1024 steps of 0.00488ish volts each. A 2.5V signal on A0 will be read by the below code as “512” (halfway to 1024), so x will = 512.
int x = analogRead(A0);
If the signal is higher than 5V, a voltage divider is needed to bring the signal down into range before feeding into the analog input, or the board will be damaged. The exact voltage divider values (which have a tolerance on them) will affect the measurement accuracy, which can be an issue in precise applications.
The UNO’s analog inputs are useable for non-critical measurements, but they’re not great. They’re noisy, and averaging them out takes extra code. Just not worth it, life’s too short.
My preference is to use specialized i2c analog input boards, which have built in averaging, more channels, and more convenient input ranges. ADS1115, ADS730, MCP3208, the possibilities are many. An especially useful input board is the INA219 for battery system applications, with channels appropriate both for a main battery voltage and also the smaller mV signals as found in current measuring shunt resistors. I use a similar 3 channel version of the 219 in the alternator regulator- the INA3221.