# Lectura inestable en las entradas analogicas Arduino Mega 2560

**URL:** <https://forum.arduino.cc/t/lectura-inestable-en-las-entradas-analogicas-arduino-mega-2560/327624>\
**Category:** Hardware\
**Created:** [August 4, 2015, 10:25am UTC](https://forum.arduino.cc/t/lectura-inestable-en-las-entradas-analogicas-arduino-mega-2560/327624 "2015-08-04T10:25:20Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![Surbyte](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/surbyte/32/217404_2.png) [@Surbyte](https://forum.arduino.cc/u/Surbyte)\
**Post date:** [August 4, 2015, 1:56pm UTC](https://forum.arduino.cc/t/lectura-inestable-en-las-entradas-analogicas-arduino-mega-2560/327624/4 "2015-08-04T13:56:32Z")

</div>

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

```cpp
// 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
	}
}

```

---

_[View the full topic](https://forum.arduino.cc/t/lectura-inestable-en-las-entradas-analogicas-arduino-mega-2560/327624)._
