Giro invertido con if servo.read()

Hola, quiero saber como puedo solucionar este problema: estoy trabajando con arduino nano y un pequeño servomotor de 180* y necesito que de acuerdo a la posición (0,90,180, o la que sea invierta su rotación cada vez que inicia la sequencia) este void loop esta configurado para ejecutarse una sola vez cada vez que yo presiono el botón rst de la placa:

#include <Servo.h>
Servo motor;
boolean replay = true;
void setup() {
  Serial.begin(9600);
  motor.attach(12);
}
void loop() {
  if (replay == true) {
    if(motor.read() == 0) {
        motor.write(180);
      delay(1000);
    }

    else if(motor.read() == 180) {
        motor.write(0);
      delay(1000);
    }
  
  }
  replay = false;
}

La idea es para abrir y cerrar el visor de un casco, si presiono el botón inicia y revisa:
si la posición es de 0 va a girar 180 para cerrar el visor, pero si lo quiero abrir de vuelta lo presiono otra vez al rst y revisa de vuelta, como va a estar en 180 me da un giro a 0 grados de vuelta, espero puedan ayudarme, muchas gracias!!

La unica manera de hacerlo como planteas es usando la memoria eeprom para guardar la ultima posicion del casco si vas a usar el reset,porque no vas a poder guardar el estado en ninguna variable.Otra opcion es habilitar un boton ,si pulsas y estaba abierto se cierra y si estaba cerrado se abre.y una tercera ,habilitar un sensor al principio o final del recorrido para que cuando enciendas la placa pueda saber la posicion.Por cierto ,este es un tema que deberia ir en Software no en Proyectos,lee las normas del foro.

Ok, gracias, perdón, no sabía bien donde colocar el tema

**Moderador:**Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software.