Servo no reconoce la señal analogica

hola gente como estan?Espero que esten bien y sanos todos en estos tiempos que corren..les quiero hacer llegar una inquietud que tengo,resulta que estoy haciendo las primeras pruebas con el hardware de mi proyecto,la idea es que el servo motor en una funcion automatica vaya desde los 2 a los 65 grados paulatinamente(lo estoy realizando con un for) y luego poder utilizarlo en ese margen de grados pero mediante un potenciometro.

Resulta ser que,inicie haciendo las pruebas con el potenciometro y todo funcionaba bien..luego agregue en el mismo programa el for para que lo haga paulatino(sin crear funciones ni nada ,solamente todo dentro del loop para probar)..resulta ser que iba y venia como esperaba..se me ocurrio aprovechando que se repetia el ciclo de loop en un momento probar el potenciometro para ver si sucedia algo(por si en un futuro,se tocaba por error mientras estaba automatico)..y no sucedio nada,siguio repitiendo la ida y vuelta paulatina..

Luego,borre el for para que lo haga paulatino y quise volver a hacerlo con la lectura analoga del pot y no hace nada..
La señal del potenciometro se lee bien(probe imprimiendo en el serial y se ve todos los valores cuando giro),pero en la funcion no hace nada..osea,el servo funciona porque si cargo el programa "paulatino"funciona normalmente,pero si pongo solo el del pot no lo hace...que puede estar pasando?

dejo el codigo aca

#include <Servo.h>

int Lecturas[10]; //Vector de lecturas.
int Val, i = 0, Total = 0, Promedio = 0;
int ang1;

Servo MiServo;

void setup() {
  MiServo.attach(9);
  for (i = 0; i < 10; i++) //Inicialización del vector.
    Lecturas[i] = 0;
  i = 0;

}

void loop() {

  Total = Total - Lecturas[i];

  Lecturas[i] = analogRead(A5);

  Total = Total + Lecturas[i];
  i = i + 1;

  if (i >= 10) {
    i = 0;
    Promedio = Total / 10;
    Val = map(Promedio, 0, 1023, 2, 65); // el "2"es la altura el "65"es el descanso(2 alto 65 bajo)
    
    for ( ang1 = 2; ang1 < 65 ; ang1++ )
    { MiServo.write(ang1);
      delay(75);//velocidad bajar(mayor mas lento)
    }
    delay(1000);//tiempo que se mantiene abajo
    for ( ang1 = 65; ang1 > 2 ; ang1-- )
    { MiServo.write(ang1);
      delay(10);//velocidad subir(menor mas rapido)
    }
    delay(3000);//tiempo que se mantiene arriba

  }
}

Un par de consejos.
Usa siempre Serial.print para que te arroje resultados que esperas lograr y comprobar si realmente hace lo que esperas o no.

No entiendo tu código, mueves un potenciómetro que luego de 10 lecturas termina dándote un valor Val.
Dime donde lo usas?
Solo le pides a tu servo que vaya de 2 a 65 a 75 mseg lo cual es rapidísimo y luego le pides que vuelva a 10 mseg lo que es mas rápido.

Cambia ese 75 por un valor mayor como 250 o 500 mseg y verás como lo hace paulatinamente y si quieres que regrese rápido lo dejas con el delay(10) sino incrementa ese valor para hacerlo mas pausado.

gracias por la pronta respuesta,tenes razon,no se entiende mucho el codigo..lo separaré en dos y explicare la situacion:
Primero,tenemos este codigo,que lo que hace es sacar un promedio de las lecturas para que el servomotor sea mas preciso y sin tanto movimiento erratico cuando se mueva con la lectura del potenciometro..Obviamente,el movimiento del servo es solo manual en este caso.

#include <Servo.h>

int Lecturas[10]; //Vector de lecturas.
int Val, i = 0, Total = 0, Promedio = 0;
int ang1;

Servo MiServo;

void setup() {
  MiServo.attach(9);
  for (i = 0; i < 10; i++) //Inicialización del vector.
    Lecturas[i] = 0;
  i = 0;

}

void loop() {

  Total = Total - Lecturas[i];

  Lecturas[i] = analogRead(A5);

  Total = Total + Lecturas[i];
  i = i + 1;

  if (i >= 10) {
    i = 0;
    Promedio = Total / 10;
    Val = map(Promedio, 0, 1023, 2, 65); // el "2"es la altura el "65"es el descanso(2 alto 65 bajo)

Este codigo,es el que haria que vaya desde desde el descanso hasta los 65 grados y vuelva cuando se realize otra funcion..en este caso lo estaba probando y por ese lo adose al otro codigo (Inicialmente tenia solamente el del potenciometro..y como era solo para testear como se comportaba lo agregue al final del codigo del pot).

 for ( ang1 = 2; ang1 < 65 ; ang1++ )
    { MiServo.write(ang1);
      delay(75);//velocidad bajar(mayor mas lento)
    }
    delay(1000);//tiempo que se mantiene abajo
    for ( ang1 = 65; ang1 > 2 ; ang1-- )
    { MiServo.write(ang1);
      delay(10);//velocidad subir(menor mas rapido)
    }
    delay(3000);//tiempo que se mantiene arriba

  }

Quizas me mal exprese,no estoy teniendo problemas con la velocidad de la funcion "paulatina",ni nada por el estilo el asunto fue que...cuando estaba esta funcion(osea,subiendo y bajando de los 2 a los 65 grados infinitamente porque lo puse en el loop),decidi mover el potenciometro para ver si sucedia algo(en mi cabeza no sonaba tan mal,queria ver si se accionaba el pot si modificaba el angulo o el tiempo de funcionamiento)..pero,no sucedio nada;siguio con la funcion paulatina.

Una vez que vi como funcionaria con esta funcion,la borre y me quede solamente con el primer codigo..que es el unicamente del potenciometro,y ahi empezo mi duda..No hace nada..giras el pot de 0 a 1023(es de 10k)y no hace nada.
Cargue el codigo nuevamente pensando que habia un error y nada..cambie de entrada analogica y nada..revise el pot con un multimetro y escala todas los valores correctamente.

Pero si vuelvo a cargar el codigo "paulatino",lo realiza con normalidad..eso es lo que me desconcierta,porque si fuese que hay una mala conexion de hardware o si el motor hubiese resultado dañado,no funcionaria en ningun modo..me explico?Y ademas,el codigo paulatino,como se lo agregue al del potenciometro comparte la alimentacion y el pin de attach del servo,cosa que no podria estar mal ya que funciona..

EDITO:volvi a cargar el codigo del potenciometro e inicie la comunicacion serial e imprimi el valor del potenciometro y nuevamente,en el programa va perfecto...de 0 a 1023..

Voy a seguir revisando aver si puedo dar pie con bola,pero les agradeceria si alguno se le ocurre algo y me puede brindar un poco de luz en el asunto..muchas gracias!!

Mira, la respusta es simple
Por un lado cuando armas algo en un protoboard muchas veces tienes malas conexiones. No todos los protoboards son malos pero.... siempre tienes la duda.

Ahora bien explicas un monton de cosas que ya te comenté y sigues teniendo dos códigos disociados.
Val no tiene ninguna injerencia en el movimiento del servo.
Supongamos que quieres medir el valor del potenciometro entre 2 y 65. Lo mas logico es que el potenciometro controlara el servo
Este código al menos une el potenciómetro con el servo. Lo que planteas sigue sin sentido.

#include <Servo.h>

int Lecturas[10]; //Vector de lecturas.
int Val, i = 0, Total = 0, Promedio = 0;
int ang1;

Servo MiServo;

void setup() {
  MiServo.attach(9);
  for (i = 0; i < 10; i++) //Inicialización del vector.
    Lecturas[i] = 0;
  i = 0;

}

void loop() {

  Total = Total - Lecturas[i];

  Lecturas[i] = analogRead(A5);

  Total = Total + Lecturas[i];
  i = i + 1;

  if (i >= 10) {
    i = 0;
    Promedio = Total / 10;
    Val = map(Promedio, 0, 1023, 2, 65); // el "2"es la altura el "65"es el descanso(2 alto 65 bajo)
    MiServo.write(Val);
    delay(100);
  }
}