Ayuda para reparar stereo motorizado con arduino

Hola como les va quisiera si alguien me podría ayudar tengo un stereo marca boss que es motorizado y los motores no mueven no encontré el schematic por eso decidí realizar una adaptación...

  1. la placa del stereo consiste de dos sensores que se deslizan sobre una banda reflectiva que tiene dos zonas negras en sus dos extremos o de STop para los sensores dos motores cc, un botón que lee la apertura de la pantalla y un botón que le da la orden de abrir y cerrar

Que necesito saber? Si alguien me puede ayudar escribí un código pero lo veo erróneo lo que necesito es saber si se puede hacer esto :

Al presionar botón1 (botón de abrir cerrar )
Lea el sensor1 y sensor2 si sensor 1 esta en high y sensor 2 en low el motor avanza hasta sensor 1 low y sensor 2 high y realiza el STop activa el motor 2 para que realice la apertura del display del stereo hasta que el botón 2(botón de apertura) quede en low ya que el mismo siempre mantiene presionado hasta que sale el display y después lo mismo en reversa una vez que el stereo este abierto :
Al presionar botón 1 detectar el estado de sensor 1 sensor 2 y si sensor 1 es low y sensor 2 high y botón 2 esta liberado (low) que invierta la polaridad y que haga reversa de motor2(motor display) hasta que esté en high el botón de apertura y de ahí que active el motor 1 hasta sensor 1 high y sensor 2 low

Si me pueden guiar aunquesea en el codigo les agradecería busque mucha información pero me abatato con las funciones no se como hacer que un botón realice tantas funciones desde ya muchas gracias las colecciones funcionan hice pruebas básicas de todos los componentes del circuito y respondieron de forma favorable

//Programa para controlar 2 motores con control de velocidad y giro con un L293
const int sensor1= 2;
const int sensor2= 4;
int callbutton1 = 7; // switch
int motor1Pin1 = 10; // Motor 1 adelante
int motor1Pin2 = 9; // Motor 1 atras
int speedPin1 = 4; // Motor 1 aceleracion

int motor2Pin1 = 5; // Motor 2 adelante
int motor2Pin2 = 6; // Motor 2 atras

int sensor1sense = 0; // variable para leer el estado de los sensores de planta
int sensor2sense = 0;
int boton1 = 0; // variable para leer el estado de los pulsadores para los pisos
int callelevator2 = 0; // variable para leer el estado de los pulsadores para los pisos// variable para leer el estado de los sensores de planta
void setup() {
pinMode(floor1, INPUT);
pinMode(floor2, INPUT);

Serial.begin (9600);

//configuracion de pines

//pinMode(switchPin2, INPUT); //no usado

// Control Motor 1
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(speedPin1, OUTPUT);

//Control Motor 2
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(speedPin2, OUTPUT);

// comprobacion de reseteo, si el led parpadea solo 3 veces, todo esta bien
// si vuelve a parpadear, significa que ha hecho un reset, revisar conexiones
// por si hubiera un corto

}

void loop()

{
callelevator1 = digitalRead(callbutton1);
floor1sense = digitalRead(floor1);
floor2sense = digitalRead(floor2);
//Si el switch no esta pulsado, gira en una direccion, si no en la contraria
if (callelevator1 == HIGH) {

delay(200);// software de rebote del botón
while(callelevator1 == HIGH)
{
callelevator1 = digitalRead(callbutton1);// comprobar el valor de nuevo el botón
delay(10);// mantener funcionando sin problemas
}// esperar a la liberación del botón para continuar
delay(1000);
floor1function();
funcionparar();// ir a la función de la planta 1 del ascensor
funcionDEF();
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
}

delay(10);

}
void funcionparar()
{
if(floor2sense != HIGH) // Comprobar el sensor de proximidad del primer piso para ver si el ascensor está allí

{// si el ascensor no está allí lo llaman

while( floor2sense==LOW) //compruebe que la proximidad de la primera planta es baja
// el motor comienza y se detiene cuando la proximidad piso apropiado dar la señal
{
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);

delay(300);// algun retardo para mantener funcionando la rutina sin problemas

}
}
}
void funcionDEF()
{
if(floor2sense != HIGH) // Comprobar el sensor de proximidad del primer piso para ver si el ascensor está allí

{// si el ascensor no está allí lo llaman

while( floor2sense==LOW) //compruebe que la proximidad de la primera planta es baja
// el motor comienza y se detiene cuando la proximidad piso apropiado dar la señal
{
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);

delay(300);// algun retardo para mantener funcionando la rutina sin problemas

}
}
}
void floor1function()

{

if(floor1sense != HIGH) // Comprobar el sensor de proximidad del primer piso para ver si el ascensor está allí

{// si el ascensor no está allí lo llaman

while( floor1sense==LOW) //compruebe que la proximidad de la primera planta es baja
// el motor comienza y se detiene cuando la proximidad piso apropiado dar la señal
{
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
;// manejar el ascensor

floor1sense = digitalRead(floor1);

delay(300);// algun retardo para mantener funcionando la rutina sin problemas
}
}
else if(floor1sense != LOW) // Comprobar el sensor de proximidad del primer piso para ver si el ascensor está allí

{// si el ascensor no está allí lo llaman

while( floor1sense==HIGH) //compruebe que la proximidad de la primera planta es baja
// el motor comienza y se detiene cuando la proximidad piso apropiado dar la señal
{
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
;// manejar el ascensor

floor1sense = digitalRead(floor1);

delay(300);// algun retardo para mantener funcionando la rutina sin problemas
}

}

}