Grabar 5 posiciones de servomotor

Hola buenas noches soy nuevo en esto, mi siguiente duda es la siguiente lo que quiero hacer es grabar 5 posiciones del servomotor y después de que haya terminado te grabarlas reproducirlas en secuencia y que por medio de leds me avise que posición se esta ejecutando

saludos

#include <Servo.h>
#include <EEPROM.h>
#define Max 1023         //Valor máximo del potenciómetro
#define Min 0     //Valor mínimo del potenciómetro
int Grabar = 2; //Pulsador conectado al pin digital 2
int Reproducir = 5; //Pulsador conectado al pin digital 5
int Resetear = 6; //Pulsador conectado al pin digital 6
int servoPin = 9; //Servomotor conectado al pin digital 9
int POT = A5; //Potenciómetro conectado al pin análogo 7
int ledPin = 13; //LED conectado al pin digital 13
int addr;
Servo myServo; 

void setup() {
  Serial.begin(9600);
  pinMode(Grabar, INPUT);       digitalWrite(Grabar, HIGH);
  pinMode(Reproducir, INPUT);   digitalWrite(Reproducir, HIGH);
  pinMode(Resetear, INPUT);     digitalWrite(Resetear, HIGH);
  pinMode(ledPin, OUTPUT);
  pinMode(POT, INPUT);
  myServo.attach(servoPin);
}

void loop() 
{
  
  if(digitalRead(Reproducir) == HIGH)
  {
    int valorPOT = analogRead(POT);
    int angulo = map(valorPOT,0,1023,0,180);
    myServo.write(angulo);
  }
  
  if(digitalRead(Resetear) == LOW)
  {                                                   
    Serial.println("Borrando EEPROM, espere..."); 
    for(addr=0; addr<=512; addr++){ EEPROM.write(addr, 255); }    
    addr = 0;
    Serial.println("EEPROM borrada");
  }   

  if (digitalRead(Grabar)==LOW) 
  {      
    delay(100);
    grabaServo(servoPin, POT); 
  }
  
  if (digitalRead(Reproducir)==LOW) 
  {       
    delay(400);
    ejecutaServo(servoPin, Reproducir);
  }
}

//--------Ejecuta posiciones almacenadas en la memoria-------------
void ejecutaServo(int servoPin, int botonPin) {
  addr = 0;
  Serial.println("Activando Servo");
  myServo.attach(servoPin);
  while (digitalRead(botonPin)) 
  {   
    int dato = EEPROM.read(addr);
    Serial.print("Lee EE: "); Serial.print(dato);
    if (dato == 255) break;                       
    dato = map(dato, 0, 254, 0, 180);             
    Serial.print(" -> "); Serial.println(dato);
    myServo.write(dato);
    delay(1500);
    addr++;
    if (addr == 512) break;
  }
  Serial.println(" y termina");
  delay(300); 
}

//--------------Almacena posiciones en la memoria----------------
  void grabaServo(int servoPin, int analogPin) {
  Serial.println("Grabando posicion");
  digitalWrite(ledPin, HIGH);
  int dato = analogRead(POT);
  Serial.print("Valor analogico: "); Serial.print(dato);
  if (dato < Min) dato = Min; if (dato > Max) dato = Max;  
  dato = map(dato, Min, Max, 0, 254);                      
  Serial.print(" -> "); Serial.println(dato);
  EEPROM.write(addr, dato);
  addr++;
  digitalWrite(ledPin, LOW);
  Serial.println("Grabada posicion");
  delay(300);
}

Una explicación que se queda por la mitad.
No dices qué evento determina el momento de la grabación?
Si se trata del pulsador, entonces veo demasiada información en tu rutina grabaServo()

No entiendo que tiene que ver el pin Analógico en la rutina de grabación?
Yo haría que el loop me muestre el estado del pin analógico y cuando se de la condición guardas la posicion buscada.

Mira si te puede servir este código

Un saludo
www.jopapa.me