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 ?