Bienvenido al mundo real, eso quiere decir que siempre te encontrarás con situaciones de este tipo.
La forma mas rápida de acomodar las cosas es leer muchas lecturas sucesivas y luego promediarlas.
Eso trae como consecuencia una demora en la presentación de los datos pero supon que los muestras cada 1 segundos, entonces tienes 1 segundo para leer la mayor cantidad de datos del sensor y promediarlos y luego presentarlos.
Usa una variable unsigned int y acumula todos los datos leidos y lleva un contador de muestras.
Al final divides el resultado del acumulado por el contador y tienes el promedio y lo escalas, o sea lo multiplas por 5 y divides por 1023 para tener el valor en voltios.
Tendras una lectura mucho mas estable.
podria ser mas o menos asi
// rutina promediacion
unsigned long sumaADC = 0;
unsigned long start;
unsigned int contador;
void setup() {
Serial.begin(9600);
start = millis();
contador = 0;
}
void loop() {
sumaADC += analogRead(A0); // modifica A0 para que coincida con el pin Analogico que estes usando
contador++;
if (millis()-start > 1000UL){ // 1000 milisegundos = 1seg
float promedio = (float) (sumaADC/contador)* 5.0/1023.0;
Serial.print("AD = ");
Serial.println(promedio);
sumaADC = 0;
contador = 0;
start = millis(); // preparo para proxima presentación
}
}