Muestra de datos desde la EEPROM

Hola, buenos días
Necesito ayuda con un problema en el desarrollo de mi codigo... estoy haciendo un contador con el cual necesito que almacene el ultimo valor mostrado en la EEPROM y cuando se reinicie muestre el valor guardado y que ademas siga contando desde ese punto en adelante. Ya busque en internet y probe con varias funciones, sin embargo no logro escribir algo que funcione. Me podrian ayudar?
Ya realice un post similar pero no habia leido las reglas, espero que este si cumpla con las mismas. Pido disculpas por no cumplirlas con anterioridad.
Aclaro que este codigo solo guarda informacion. Necesitaria ayuda para desarrollar el resto

#include <EEPROM.h>
int outpin[] {12, 11, 10, 9};
int direccion = 0;
void setup(){
 int i = 0;
  for ( i = 0; i < 10; i++)
  pinMode(outpin[i], OUTPUT); 
   delay(2000);
}

void loop() {
 int i = 0, j = 0;    
  for ( i = 0; i < 10; i++)
  { 
    EEPROM.write(direccion, i);
    for ( j = 0; j < 4; j++) 
       {
      if ( ( (i >> j) & 1 )  == 1 )
        digitalWrite(outpin[j], HIGH);
      else digitalWrite(outpin[j], LOW);
    } 
 delay(500); 
  }
}

Martín. Eso podrías hacerlo guardando el valor en una posición de la EEPROM cada vez que cambie. Al principio del programa deberías leer esa posición de la EEPROM " rescatando" el último valor guardado e iniciar tu contador a partir de ese valor. No sé con que frecuencia cambia el valor pero tené en cuenta la vida útil de la EEPROM