Leer y escribir en eeprom del propio arduino

Ya se que esto puede estar mas q preguntao pero no me acaba de quedar claro y no lo consigo, para leer estoy usando un ejemplo de un forero que parece q le fue bien grabando en la eeprom y para leer tb en otro post habia un codigo pero a la hora de mostrar en cosola me da 0, donde puede estar el fallo???
Gracias de antemano

void setup(void)
{
  Serial.begin(9600);
}
void loop()
{
writeEEPROMPos(0,33); // pongo a partir de la posicion 0 y le doy un valor de 33
LeerValorDuracion();
//while(1); //para q no lo repita todo el rato.
}
void writeEEPROMPos(int pos, unsigned long val){
  int bytePos = pos * 3;
  
  byte byte0 = (byte)(val);
  byte byte1 = (byte)(val >> 8);
  byte byte2 = (byte)(val >> 16);
  
  EEPROM.write(bytePos, byte2); // byte mas significativo
  bytePos++;
  EEPROM.write(bytePos, byte1);
  bytePos++;
  EEPROM.write(bytePos, byte0);  
}

int LeerValorDuracion() {
    int valorrt = 0;
    char valor[5];
    for (int i=0;i<4;i++){
      valor[i] = EEPROM.read(i);
    }
    valor[5]='\0';
    valorrt = atoi(valor);
Serial.print(valorrt);
}

Ya por cabezota, he encontrao lo que parece la solucion, queda adaptarlo a mi gusto, a ver que puedo sacar. Para el que le interes esta en este hilo.