Como guardar posición de servomotor en memoria eeprom

Cordial saludo. Les consulto como puedo guardar la posición de un servomotor en la memoria eeprom. La idea es hacer un programa para un servomotor que gire en un angulo de 100 a 140 grados, almacene la posición del angulo en memoria eeprom, de forma que cuando se vaya la energia el programa empiece donde quedo el angulo de giro antes de apagarse. Luego, debe devolverse el angulo, es decir debe ir de 141 a 100 grados y almacenar en memoria eeprom.

Aquí les comparto el programa que tengo hecho. No entiendo porque no me funciona.

Saludos.

Programa:

#include <EEPROM.h>
#include <Servo.h>

int direccion = 1; // posicion de la memoria eeprom
byte valorinicial = 140; //varialble tipo byte
byte valorinicial1 = 101;

Servo servomano;

void setup()
{
Serial.begin(9600);

servomano.attach(8); // mano

EEPROM.write(direccion, valorinicial);
EEPROM.write(direccion, valorinicial1);

}

void loop()
{

for (int pos = 140; pos > 100; pos--)
{
servomano.write(pos);
delay(50);
int Valor = analogRead(8) / 4;

EEPROM.write(direccion, pos);
EEPROM.read(pos);

}

for (int pos = 101; pos < 141; pos ++)

{
servomano.write(pos);
delay(18);
EEPROM.write(direccion, pos);
EEPROM.write(direccion, pos);
EEPROM.read(pos);

Serial.println(pos);

}
}

¡PARA EL CARROOOOO!
Lo primero que debes tener en cuenta con la EEPROM es que tiene vida limitada. Soporta un número de escrituras limitado (aproximadamente 100.000). Así que haz cálculos de cuánto te puede durar la EEPROM teniendo en cuenta el número de escrituras (leer, todo lo que quieras). Por ejemplo, si haces una escritura por hora, unos 11 años.
En tu caso has metido más de cien escrituras por cada ciclo de loop, lo que significa que en aproximadamente mil ciclos de loop te habrás cargado la EEPROM. No la puedes tratar como si fuera una memoria RAM normal. En tu caso, si lo que quieres es recordar dónde estaba el servo al cortarse la corriente, lo que deberías hacer es un circuito que detecte que se ha cortado la corriente, y tenga una reserva de energía suficiente para guardar en EEPROM al detectar la falta de corriente.
Lo primero que debes hacer es cambiar el enfoque que tienes de uso de EEPROM para reducir tus escrituras. Lo más probable es que hayas llegado a "fundir" la posición de memoria 1, pero si guardas en otra posición distinta tal vez sí quede el dato grabado.
Saludos.

Mil gracias por tu respuesta noter. Te consulto si es posible realizar por programación un lo que tu me recomiendas, es decir, hacer que arduino detecte cuando no hay corriente y almacene la posicion donde quedo en memoria eeprom.

Si tienes un ejemplo mucho mejor.

Saludos.

No. Porque es como el dilema de quien nació primero el huevo o la gallina? Aca como esperas que arduino que se queda sin energía detecte que se queda sin energía?
Un método simple sería asi:
Descarto que tu servo se alimenta con otra fuente distinta al Arduino. Eso es fundamental. Que el servo se detenga no me importa. No puedo perder control del Arduino por compartir energía okay?
Agregas un capacitor de 1000 o 2200uF 16V con la alimentación que le llega vía Vin o vía conector externo. Este capacitor te dará unos mseg extras para detectar ese momento.
Tu programa no debe usar delays y si requiere demoras serán con millis() entonces con cada ciclo lees una entrada analógica conectada a los 5V via un divisor de tensión.
Ese valor sera X en condiciones normales. Si cae delta X = Xahora-Xanteriior o sea una diferencia con el valor anterior entonces se debe a corte de energía.
El sistema simple te da tiempo para detectar el corte, salvar los datos en eeprom y no seguir mas hasta que la situación se restaure.

Mirando un poco he visto, por ejemplo, el esquema que aparece en el primer post de este hilo:

¿Algo similar sería lo que sugieres, surbyte?