Не знаю как там в ардуинах, но ...
Думаю, что аналоговый сигнал подается на АЦП и в программе вы имеете дело уже с дискретным (оцифрованным) сигналом.
Так вот, в АЦП, обычно существует пара коэффициентов (смещение нуля и масштаб), в документации к АЦП приводится формула как использовать эти коэффициенты с цифровым отсчетом сигнала, что бы получить вольты (кстати, АЦП не обязательно меряет именно напряжение). Обычно формула это что-то вроде: (X + offset)*scale. Но могут быть и другие варианты.
Коэффициенты на всех АЦП разные. Даже на двух одинаковых АЦП они могут быть разные (и как правило они разные). АЦП калибруются на заводе и коэффициенты зашиваются в чип. В документации к АЦП должен быть описан способ получения этих коэффициентов. Если АЦП многоканальное, то коэффициенты могут быть разными для каждого канала.
В библиотеке работы с АЦП, обычно присутствуют функции получения калибровочных коэффициентов и может быть даже получение уже преобразованного сигнала.
Вообще если бы АЦП было идеальным, то преобразовать цифровой отсчет в вольты было бы просто. Например АЦП выдает 16 битные без знаковые отсчеты (т.е. на выходе АЦП числа от 0 до 65535, тип данных uint16_t), диапазон измерений допустим [-5; +5]В. Пусть uint16_t Х - цифровой отсчет, полученный от АЦП, тогда преобразовать его в вольты можно так: ((double)(((int32_t)X) - 0x7FFF)) / 0x7FFF ) * 5.0. При желании можно раскрыть скобки и получить те самые 2 калибровочных коэффициента для идеального АЦП.
Но т.к. АЦП не идеальны и там присутствуют разнообразные погрешности и помехи, то и появляются те самые калибровочные коэффициенты. Формула преобразования остается примерно той же самой, но используются уже не точные числа, а подобранные коэффициенты.