PCA9685 y EEPROM

Este código sin pulsadores y con un par de automatizaciones muestra que SI funciona.
Solo presenta datos cuando hay grabaciones según tu propio código.

#include <Arduino.h>

#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];
unsigned long startTime, startTime2;
bool flag = false;
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]);
    Serial.begin(115200);
    Serial.println("Comienzo a visualizar el comportamiento.");
}
// Velocidad de rotación +- lenta
void slowMove(int n_servo, int delayTime, int to)
{ //
    //Serial.println("n_servo = "+String(n_servo)+" to = "+String(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
    flag = true;
}
// 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 (millis() - startTime > 500UL) {
        estadoboton1 = 1 - estadoboton1;
        Serial.println(estadoboton1?"Boton1 :  ON":"Boton1 : OFF");
        startTime = millis();
    }
        

    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
        //Serial.println("Entrando en salida1");
        //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
        //Serial.println("Entrando en slowMove");
        slowMove(0, 15, 125);      // pin placa PCA9586, delay(velocidad rotación), grados
    }
    else    {
        //Serial.println("Entrando en salida1 por lado else");
        //servos.setPWM(1, 0, 4096); //apaga el led rojo
        //servos.setPWM(2, 4096, 0); //enciende el led verde
        //Serial.println("Entrando en slowMove");
        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 (millis() - startTime2 > 750UL) {
        estadoboton1 = 1 - estadoboton1;
        Serial.println(estadoboton2?"Boton2 :  ON":"Boton2 : OFF");
        startTime2 = millis();
    }    

    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
        //Serial.println("Entrando en salida2");
        //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     {
        //Serial.println("Entrando en salida2 por lado 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
    }
    if (flag) {
            EEPROM.update(0, currentPos[0]);
            EEPROM.update(2, currentPos[3]);
            Serial.println("0 = "+String(currentPos[0]));
            Serial.println("2 = "+String(currentPos[3]));
            flag = false;
    }
}

Tuve que comentar los servos porque se quedaba en un loop infinito.