no ejecuta una instruccion en la funcion if

hola me encargaron un proyecto en la escuela, pero al momento de poner la funcion if y su condicion, no puedo hacer que ejecute la segunda intruccion

#include <LEANTEC_ControlMotor.h>//Incluimos la librería control de motores
// Configuramos los pines que vamos a usar
ControlMotor control(2,3,7,4,5,6);
int MotorDer1=2;//El pin 2 de arduino se conecta con el pin In1 del L298N
int MotorDer2=3;//El pin 3 de arduino se conecta con el pin In2 del L298N
int MotorIzq1=7;//El pin 7 de arduino se conecta con el pin In3 del L298N
int MotorIzq2=4;//El pin 4 de arduino se conecta con el pin In4 del L298N
int PWM_Derecho=5;//El pin 5 de arduino se conecta con el pin EnA del L298N
int PWM_Izquierdo=6;//El pin 6 de arduino se conecta con el pin EnB del L298N
int infraPin = 10; // pin del infrarrojos utilizado como entrada digital
int valorInfra=1;
int velocidad=150;//Declaramos una variable para guardar la velocidad
int aleatorio=0;

void setup()
{
//Configuramos los pines como salida
pinMode(MotorDer1, OUTPUT);
pinMode(MotorDer2, OUTPUT);
pinMode(MotorIzq1, OUTPUT);
pinMode(MotorIzq2, OUTPUT);
pinMode(PWM_Derecho, OUTPUT);
pinMode(PWM_Izquierdo, OUTPUT);
pinMode(infraPin, INPUT); // Inicializa el pin 4 como entrada digital

}
void derecha_antihorario_izquierda_horario(){
/En esta fución la rueda derecha girará en sentido antihorario y la
izquierda en sentido horario.
En este caso, si las ruedas estuvieran en el chasis de un robot, el
robot retrocederia.
/
digitalWrite(MotorDer1,HIGH);
digitalWrite(MotorDer2,LOW);
digitalWrite(MotorIzq1,HIGH);
digitalWrite(MotorIzq2,LOW);
analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200

}
void derecha_horario_izquierda_antihorario(){
/En esta fución la rueda derecha girará en sentido horario y la
izquierda en sentido antihorario.
En este caso, si las ruedas estuvieran en el chasis de un robot, el
robot avanzaría.
/
digitalWrite(MotorDer1,LOW);
digitalWrite(MotorDer2,HIGH);
digitalWrite(MotorIzq1,LOW);
digitalWrite(MotorIzq2,HIGH);
analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200

}
void parar(){
/Función para que las ruedas paren/
digitalWrite(MotorDer1,LOW);
digitalWrite(MotorDer2,LOW);
digitalWrite(MotorIzq1,LOW);
digitalWrite(MotorIzq2,LOW);
analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200

}
void giro_horario(){
/En esta fución ambas ruedas girarán en sentido horario.
En este caso, si las ruedas estuvieran en el chasis de un robot, el
robot giraria a la derecha.
/
digitalWrite(MotorDer1,HIGH);
digitalWrite(MotorDer2,LOW);
digitalWrite(MotorIzq1,LOW);
digitalWrite(MotorIzq2,HIGH);
analogWrite(PWM_Derecho,200);//Velocidad motor derecho 200
analogWrite(PWM_Izquierdo,200);//Velocidad motor izquierdo 200

}
void loop()
{

if (valorInfra == digitalRead(infraPin)){
parar();
delay(5000);
derecha_antihorario_izquierda_horario();

}

else
{
giro_horario();
}

}

solo se detiene los 5 segundos y despues no hace nada, derecha_antihorario_izquierda_horario(); esto nunca lo ejecuta a menos que le ponga un delay pero no quiero eso, tiene que girar hasta que el sensor salga de un circulo blanco y marque 0 para que avance el motor

Lee el privado con las intrucciones para editar tu post de acuerdo a las normas del foro

Bienvenido al foro Arduino @ArturoLara.

Te aconsejo que vayas paso a paso.

  1. Por lo visto el sensor infrarrojo funciona porque hace la primera parte del código, o sea parar()
  2. Otra cosa que debes probar es si completa las fases o rutinas que has establecido.
    Crea un pequeÑo loop que haga cada rutina del motor por separado y asegurate que las cumpla
    Algo asi
void loop() 
{ 
  Serial.println("Motor parado");
  parar();
  delay(5000);
  Serial.println("Motor  derecha_antihorario_izquierda_horario");
  parar();
  delay(5000);
  Serial.println("Motor giro_horario");
  parar();
  delay(5000);

}

Como ves yo use etiquetas para postear el código. Asi que eso es lo que te pido.
Ahora.. en esta secuencia el programa al que debes agregarle en el setup

Serial.begin(9600);

Permite que por monitor serie veas paso a paso como se comporta.
Si todo lo hace bien entonces podemos ver qué ocurre.

En que momento o acción tu IR generara un LOW en pin D10 ?

La sugerencia de añadir Serial.prinln("comentarios"); debería darte una pista del problema.