PCA9685 y EEPROM

El scketch, con el que trabajo, es este, esta limpio del tema leds, para probar la EEPROM, los leds que tiene, que usan la función void setPin(uint8_t num, uint16_t val, bool invert) { seran para un cuadro de visualización y control. con lo cual da lo mismo si lo guardo o no. La función que es principal es void slowMove(int n_servo, int delayTime, int to) { que es la que me da la posición del servo que es la que quiero guardar. El scketch entero es el siguente.

#include <Adafruit_PWMServoDriver.h>  //libreria modulo PCA9685
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#include <EEPROM.h>
Adafruit_PWMServoDriver servos = Adafruit_PWMServoDriver(0x40);

unsigned int pos0 = 172; // ancho de pulso en cuentas para pocicion 0° (configuracion de la libreria servos)
unsigned int pos180 = 565; // ancho de pulso en cuentas para la pocicion 180° (configuracion de la libreria servos

const int buttonPin1 = 2;
const int buttonPin2 = 3; 

int estadoboton1 = 0;           //guarda el estado del boton
int estadoanteriorboton1  = 0;  //guarda el estado anterior del boton
int estadoboton2 = 0;           //guarda el estado del boton
int estadoanteriorboton2  = 0;  //guarda el estado anterior del boton
int estadoboton3 = 0;           //guarda el estado del boton

int salida1 = 0;     //estado inicial del rele 0=apagado, 1= encendido
int salida2 = 0;

int currentPos[16];  

const int tiempoantirebote = 80; //funcion para el antirebote del boton
boolean antirebote(int pin) {
  int contador = 0;
  boolean estado;
  boolean estadoanterior;

  do {
    estado = digitalRead(pin);
    if (estado != estadoanterior)
    {
      contador = 0;
      estadoanterior = estado;
    }
    else {
      contador = contador + 1;
    }
    delay(1);//Retardo al apretar pulsador
  } while (contador < tiempoantirebote);
  return estado;
}


void setup() {
  servos.begin();
  servos.setPWMFreq(60); //Frecuecia PWM de 60Hz o T=16,66ms
  lcd.begin(20, 4);
  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Desvios v3 by Mario");
  lcd.setCursor(0, 1);
  lcd.print(" guardar a EEPROM");
  lcd.setCursor(0, 2);
  lcd.print("  posiscio");
  lcd.setCursor(0, 3);
  lcd.print("   servos"); 
  
  pinMode(A4, INPUT);
  pinMode(A5, INPUT);
  pinMode(buttonPin1,  INPUT);
  pinMode(buttonPin2,  INPUT);

  EEPROM.get(0, currentPos[0]);
  EEPROM.get(2, currentPos[3]);

}
// Velocidad de rotación +- lenta
void slowMove(int n_servo, int delayTime, int to) { //
  if (currentPos[n_servo] == to) return;  // Nada que hacer si ya está ahí
  else if (to > currentPos[n_servo])
  {
    for (int i = currentPos[n_servo]; i < to; i++)
    {
      servos.setPWM(n_servo, 0, i);
      delay(delayTime);
    }
  }
  else if (currentPos[n_servo] > to)
  {
    for (int i = currentPos[n_servo]; i > to; i--)
    {
      servos.setPWM(n_servo, 0, i); // (pin PCA9685, delay, grados)
      delay(delayTime);
    }
  }
  currentPos[n_servo] = to; // guarda la posición actual del servo
}
// Encender/Apagar led 3 pins RG (pin PCA9685, 4096, 0)(encendido), (pin PCA9685, 0, 4096)(Apagado)
void setPin(uint8_t num, uint16_t val, bool invert) {
  // Clamp value between 0 and 4095 inclusive.
  val = min(val, (uint16_t)4095);
  if (invert) {
    if (val == 0) {
      // Special value for signal fully on.
      servos.setPWM(num, 4096, 0);
    } else if (val == 4095) {
      // Special value for signal fully off.
      servos.setPWM(num, 0, 4096);
    } else {
      servos.setPWM(num, 0, 4095 - val);
    }
  } else {
    if (val == 4095) {
      // Special value for signal fully on.
      servos.setPWM(num, 4096, 0);
    } else if (val == 0) {
      // Special value for signal fully off.
      servos.setPWM(num, 0, 4096);
    } else {
      servos.setPWM(num, 0, val);
    }
  }
}
  
void loop() {
  //Desvio 1 - Pos Módulo PCA9685 0
  estadoboton1 = digitalRead(2);  //lee el estado del boton
  if ((estadoboton1 == HIGH) && (estadoanteriorboton1 == LOW)) { //si estado de boton cambia
    if (antirebote(2)) { //El numero del antirebote debe coincidir con el numero del pin leido digitalread
      salida1 = 1 - salida1;  //cambiamos el estado del boton
    }
  }
  estadoanteriorboton1 = estadoboton1; //guarda el estado del boton
  if (salida1 == 1) {  //cambia el servo para cambiar la aguja
    servos.setPWM(1, 4096, 0); //enciende el led rojo //led bicolor RG 3 pins
    servos.setPWM(2, 0, 4096); //apaga el led verde //led bicolor RG 3 pins
    slowMove(0, 15, 125); // pin placa PCA9586, delay(velocidad rotación), grados
  }
  else {
    servos.setPWM(1, 0, 4096); //apaga el led rojo
    servos.setPWM(2, 4096, 0); //enciende el led verde
    slowMove(0, 15, 160); // pin placa PCA9586, delay(velocidad rotación), grados
  }
  //Desvio 2 - Pos Módulo PCA9685 3
  estadoboton2 = digitalRead(3);  //lee el estado del boton
  if ((estadoboton2 == HIGH) && (estadoanteriorboton2 == LOW)) { //si estado de boton cambia
    if (antirebote(3)) {  //El numero del antirebote debe coincidir con el numero del pin leido digitalread
      salida2 = 1 - salida2; //cambiamos el estado del boton
    }
  }
  estadoanteriorboton2 = estadoboton2; //guarda el estado del boton
  if (salida2 == 1) { //cambia el servo para cambiar la aguja
    servos.setPWM(4, 4096, 0); //enciende el led
    servos.setPWM(5, 0, 4096);  //apaga el led
    slowMove(3, 15, 125); // pin placa PCA9586, delay(velocidad rotación), grados
  }
  else {
    servos.setPWM(4, 0, 4096);  //apaga el led
    servos.setPWM(5, 4096, 0);  //enciende el led
    slowMove(3, 15, 160); // pin placa PCA9586, delay(velocidad rotación), grados
  }
  EEPROM.update(0, currentPos[0]);
  EEPROM.update(2, currentPos[3]);
}

Son varios servos en distintas posiciones, he puesto EEPROM.get en el "void setup", para guardar la posición del servo (currentPos[n_servo] ) en el cual n_servo, es el pin al que esta conectado en la PCA9685, y en el "void loop" he probado con EEPROM.update y EEPROM.put y no me guarda la posición. Don de esta mi fallo, donde me he perdido?