Ascensor de 3 plantas con finales de carrera

Supongo que se trata de un montacarga y los pulsadores son para que la caja suba o baje a dicho piso, por lo que para el 2do piso tu logica deberia analizar si esta en 1ro (subir) o esta en 3ro (bajar).

byte llamada; //De que piso lo llamas
byte esta; //En que piso esta

void loop(){
   switch (llamada){
   case 1:
      //Baja todo
      break;
   case 2:
      if (esta == 1){
         //Sube 1 piso
      }else{
         //Baja 1 piso
      }
      break;
   default:
      //Sube todo
}

Pero si tienes un motor 360 para que quieres los finales de carrera ?

Porque imagino que 0° = 1er, 180° = 2do y 360° 3er piso o no sera asi ?