Problema programación tiempos de ejecución

Para manejar la ruta de mi robot a traves de 2 motores DC controlados por un L298N he realizado varios void que luego introduzco en el void loop() para que sigan un bucle.
Mi problematica es que cuando introduzco estos void en el void setup, al añadir el tiempo de ejecucion al traves de la funcion delay() pues no se me activa niguno, no hace caso.
Pero por separado si funcionan
Os dejo el ejemplo de mi programacion, para que veais que tengo distintos vois creados: void Adelante(), void Atras, void Izquierda(), void Derecha(), void parar();

//MOTOR B
int IN3 = 7;
int IN4 = 4;
//MOTOR A
int IN1 = 2;
int IN2 = 3;

void setup()
  {
  //MOTOR B
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  //MOTOR A
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
}

void Derecha()
{
  
  
  // Motor B
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  analogWrite(IN3, 200);

  
  //MOTOR A
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(IN1, 200);

}

void Adelante()
{
  
  
  // Motor B
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(IN3, 200);

  
  //MOTOR A
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(IN1, 200);

}

void Atras()
{
  
  
  // Motor B
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(IN3, 200);

  
  //MOTOR A
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(IN1, 200);

}

void Izquierda()
{
  
  
  // Motor B
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(IN3, 200);

  
  //MOTOR A
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  analogWrite(IN1, 200);

}

void Parar()
{
  
  
  // Motor B
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(IN3, 200);

  
  //MOTOR A
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(IN1, 200);

}

void loop() {
  Adelante ();
 delay (2000);
 Atras ();
 delay (2000);
 Derecha ();
 delay (1000);
 Izquierda ();
 delay (1000);
 Parar ();
 delay (4000);
}

De esta forma no ocurre nada, únicamente funcionan los motores a una velocidad hacia delante y ya, no cumple la rutina creada en el void loop().

¿Puede ser problema del delay?

Para mi esta mal declarado o falta para controlar la velocidad.

Te falta conectar un cable mas. Segun leo aqui.

int ENB = 3;    // ENB conectada al pin 3 de Arduino
************************************

/* 
Ejemplo de control de motor DC usando modulo L298
http://electronilab.co/tienda/driver-dual-para-motores-full-bridge-l298n/

Creado 16/05/14
por Andres Cruz
ELECTRONILAB.CO
*/

int IN3 = 5;    // Input3 conectada al pin 5
int IN4 = 4;    // Input4 conectada al pin 4 
int ENB = 3;    // ENB conectada al pin 3 de Arduino
void setup()
{
pinMode (ENB, OUTPUT); 
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
 //Preparamos la salida para que el motor gire en un sentido
 digitalWrite (IN3, HIGH);
 digitalWrite (IN4, LOW);
 // Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad
 analogWrite(ENB,55);
 delay(2000);
 analogWrite(ENB,105);
 delay(2000);
 analogWrite(ENB,255);
 delay(2000);
 // Apagamos el motor y esperamos 5 seg
 analogWrite(ENB,0);
 delay(5000);
}

https://electronilab.co/tutoriales/tutorial-de-uso-driver-dual-l298n-para-motores-dc-y-paso-a-paso-con-arduino/

Tienes razón pero mi conexion no es de esa forma.
Tengo conectados los pines IN1, IN2, para el MOTOR A, y los pines IN3, IN4 para el MOTOR B.

De esta forma, si quiero que vaya hacia adelante pongo en HIGH los pines IN4 y IN1, dejando IN2 y IN3 en LOW pero con un valor PWM (0 a 255) para regular la velocidad.
Si quisiera que fuese hacia atras, pondria IN3 y IN1 en HIGH, dejando IN4 y IN1 en LOW pero con un valor PWM para regular la velocidad.

Con este tipo de conexión, dejo los jumper ENA y ENB conectado.