Problema con lectura de entradas analogicas[Solucionado]

Buen dia, estoy utilizando un arduino de 3.3VDC,
Tengo una fuente de alimentacion a la cual le coloco pilas de Li-on que extraje de una computadora portatil, estas me dan 11.11 voltios, para alimentar mi circuito tengo un regulador de tension de 7VDC, uno de 5VDC y uno de 3.3VDC, la terminal GND de mi arduino esta conectada al negativo del regulador de 3.3VDC.
Tengo en las entradas analogicas A0; A1; A2 conectadas una resistencia de 10k a GND.
pero cuando hago la prueba.

Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
Serial.println(analogRead(A2));

la medicon nunca es estable, varia de 0, hasta 3XXX, ya intente colocando ceramicos en las salidas de los reguladores, entre positivo y negativo, resoldar las resistencias, pero no consigo una lectura estable,...
¿Podria estar dañado en ADC de mi tarjeta?
¿Alguna recomendacion?

Gracias!!!

Y que es lo que estas leyendo en las entradas analogicas?

Exacto como dice Jose, pones la R a masa pero no conectas nada, entiendo y estoy de acuerdo que debiera leer 0, pero al menos conectale una pila de 1.5 Volts a ver que presenta

pero 3xxx es mas que malo si la lectura maxima es 1024!!!

Primero suegiero que entra lecturas hagas un delay(1000); para estabilizar el conversor,y no enloquecerlo.
depues con una r de 1k lo llevas a 5v, 3,3 y gnd para ver los maximos,medios y cero

Y de estar dañado es porwue le has conectado algo con mas tension o negativa al pin

Buen, dia, mi ADC es de 12 bits, por eso pasa de 3XXX ya que su rango es de 0 - 4095, estoy leyendo colores, usando las entradas analogicas, sin embargo nunca era precisa la medicion, luego intente medir solo la analogica puesta a masa mediante la resistencia de 10k y el problema era que nunca se mantenían estables,… Sin embargo ya esta solucionado, con el sigiente algoritmo:

-Primero medir el valor por cada canal RGB apuntando a un fondo blanco y guardarlo en un arreglo.
-Luego hacer lo mismo pero con un fondo Negro.
-Despues hacer la medicion y promediar, por ejemplo para el canal Rojo, cada medicion, regulada mediante constrain

lecturasColor = 100;

for(contadorRojo;contadorRojo<=lecturasColor;contadorRojo++)
      {
        auxR = auxR + constrain(analogRead(lecturaColor),minimoNegro[R],maximoBlanco[R]);
      }
valorCanalRojo = auxR/contadorR;

Con esto ya puedo distinguir colores, que sera la funcion principal del pequeño robot que hago…

Muchas Gracias por su apoyo!! =)

que placa es entonces?

Me imagino que la DUE que es la unica con ADC de 12bits y 3.3 V

Amigo para la proxima indica todo lo que sirva a los efectos de evaluar el problema.
Nunca dijiste que usabas un DUE.

y la solucion?

la solución nada tiene que ver con lo que expresaste en un inicio.
Lo que expresaste ahora que sabemos que es un DUE tiene que ver con una mala elección de la variable que contenía los datos del ADC.
Me ha sucedido que por error defino byte tension = analogRead(A0); y solo toma 8 bits LSB y se come los otros 2 bits MSB. Las respuestas son aleatorias como lo que explicabas. No como tu caso 3XXX que implicaría enmascarlo de ese modo.

No se si aporta a desentrañar el problema.

Para estabilizar las lecturas yo uso un método que es mucho mejor que el promedio burdo tal como lo planteaste.
Esa forma de promediar es lenta porque requiere de N muestras para presentar un valor dado.
Buscando métodos encontré dos muy buenos. Ahora te explico el que tiene que ver con el tuyo pero usado de otro modo.

#define SAMPLES_TO_AVERAGE  100 // Defino una cantidad de muestras

La diferencia es que yo voy a acumular en un totalizador como haces tu, pero sumo y resto el ultimo valor divido la cantidad de muestras.
Hasta que se cumpla el primer ciclo de 100 muestras arrojará valores erroneos pero luego el valor que presenta es el promedio de las ultimas 100 muestras a la que le quito la primera y le sumo la nueva.

temp = analogRead(A2);
 ToTVoltage = ToTVoltage - (ToTVoltage / SAMPLES_TO_AVERAGE) + (uint32_t) temp;

uint32_t son long o sea 32 bits.
Bueno como ven en la ecuación el valor nuevo temp lo sumo al totalizador RawVoltage (me gustan los nombres en ingles).
ToTVoltage esta definido como uint32_t o sea Long

entonces entendemos que hace la ecuación.
Si ya sacaron el promedio (cosa que no se ve pero imaginenlo) cada item que o muestra tendra un valor ToTVoltage/SAMPLE_TO_AVERAGE ya que si multiplan por la cantidad de muestras les vuelve a dar TOTVoltage.

Entonces si le resto ToTVoltage/SAMPLE_TO_AVERAGE es como si hubiera retirado un elemento cuyo peso dio ese totalizado.
Ahora si sumo el nuevo valor tendre un Totalizado muy similar al anterior pero que contiene la nueva muestra.
Finalmente obtengo el resultado final expresado en mV no en volts como generalmente hacemos
Ventajas de hacerlo asi: velocidad, opero con long no con floats.

#define V_MAX_MV     5000  // en milivolts
#define ADC_MAX_COUNT  1024

BatVoltage_mV = ((ToTVoltage/SAMPLES_TO_AVERAGE) * V_MAX_MV)/ADC_MAX_COUNT;
Aca obtengo el valor final

Como verán es un método que uso en cualquier micro y si cambia la tensión de Referencia pongo 3.3 como Uds claro.
Si cambia la resolución del AD pongo 4096 si fuera DUE.

Tambien pueden hacerlo en float

#define V_MAX     5
#define ADC_MAX_COUNT  1024
#define SAMPLES_TO_AVERAGE  100 // Defino una cantidad de muestras
int temp;
long ToTVoltage = 0;
float BatVoltage_Volt = 0.0;

temp = analogRead(A2);

ToTVoltage = ToTVoltage - (ToTVoltage / SAMPLES_TO_AVERAGE) + (long) temp;

BatVoltage_Volt= (float) ((ToTVoltage/SAMPLES_TO_AVERAGE) * V_MAX)/ADC_MAX_COUNT;  // Valor final

Aca obtengo el valor final
Juega con la cantidad de muestras y veras que salvo el arranque luego es una belleza de estabilidad.
Luego te presento otro que juega con las medianas y descarta extremos. Muy muy bueno tambien.

De nuevo y para reforzar la idea.
El método clásico que usas y yo usaba tambien, DEMORA tiempo en tomar todas las muestras, este demora la primera vez y luego cada valor presentado esta pesado y es un promedio exacto.