Activar un boton en el loop

Hola a todos! Estoy con un proyecto en principio sencillo pero me he atascado en un punto importante, es un brazo mecanico que controla un motor, al activar el boton 1 el motor tira de un brazo (Tipo subeybaja) cuando llega al final del recorrido el propio brazo pulsa un fin de carrera (Boton 2) que hace que se pare durante un tiempo x (En este caso 3 segundos) y que invierta el motor, haciendo bajar el brazo que pulsa un boton 3 al final del recorrido... El problema es que tal y como está montado, el boton 3 siempre queda pulsado, y esto hace que no lea el boton 1 (Ozú, no se si me he explicado) la opción que se me ocurre, aunque no se como hacerlo via codigo es que el boton 3 esté desactivado hasta x tiempo después de haber pulsado el boton 1.

El codigo actual es este.

const int button1Pin = 7;    
const int button2Pin = 8;     
const int button3Pin = 9; 

const int ledPin =  1;   
const int led2Pin =  2; 
const int led3Pin =  3;
const int led4Pin =  4;
// variables will change:
int ledPinState = 1;
int led2PinState = 1;
int led3PinState = 1;
int led4PinState = 1;

int button1State = 0;        
int button2State = 0;
int button3State = 0;
void setup() {

  pinMode(ledPin, OUTPUT);
    pinMode(led2Pin, OUTPUT); 
     pinMode(led3Pin, OUTPUT);
    pinMode(led4Pin, OUTPUT); 
  // initialize the pushbutton pin as an input:
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
  digitalWrite(ledPin, HIGH);
   digitalWrite(led2Pin, HIGH);
     digitalWrite(led3Pin, HIGH);
   digitalWrite(led4Pin, HIGH);
}

void loop() {

  button1State = digitalRead(button1Pin); //Activa el motor al presionar boton 1 

  
  if (button1State == HIGH) {
//COMO ACTIVO EL BOTON 3 2 SEGUNDOS DESPUES DE HABER PRESIONADO EL 1? QUE HAY QUE MODIFICAR?
    digitalWrite(ledPin, LOW);

     
  }
   button2State = digitalRead(button2Pin); //Activa el fin de carrera del brazo, espera 3 segundos y empieza a descender
  if (button2State == HIGH) {

    digitalWrite(ledPin, HIGH);
     digitalWrite(led2Pin, HIGH);
     delay(3000);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led4Pin, LOW);
 

  }
    button3State = digitalRead(button3Pin); //Desactiva el motor al presionar el fin de carrera 2
   
  if (button3State == HIGH) {
 
    
   digitalWrite(led3Pin, HIGH);
     digitalWrite(led4Pin, HIGH);

  }
}

Alguna orientación sobre esto? Gracias por adelantado!

He de pedir disculpas, era un problema de hardware, no de software, ahora que cambié los botones funciona correctamente.

Pido al moderador que lo cierre