[RESUELTO] Puente en H L293D- Regulación de velocidad y sentido de giro con R.V.

Buenas noches.
Mi segundo post en el foro, espero hacerlo bien (el primero no fue así).
Tengo una placa Arduino uno R3, y estoy intentando realizar un control de un motor DC con un puente L293D con un velocidad variable girando a derechas y a izquierdas, mediante el uso de un potenciómetro variable de 10k: (Extremo izquierdo = giro a izquierdas, centro = banda neutra, Extremo derecho = giro a derechas). Ploteando los valores de la resistencia variable observo que su funcionamiento, entre 0 y 1023, es correcto, por tanto y salvo que me digáis lo contrario descarto que sea esta parte del hardware y del software.

El problema lo tengo en que solo gira en un sentido (en el que marca MC1), el sentido que debería. proporcionar MC2 es nulo.
He realizado la prueba de conectar el MC1 donde esta el MC2 y el motor gira correctamente en sentido inverso.
Podéis echarme una mano.
Muchas gracias.

//CONTROL DE VELOCIDAD PARA MOTOR DE CC CON INTEGRADO L293DNE "PUENTE EN H"

const int EN = 9; //Enable medium bridge (1 - right of 2 - left)
const int MC1 = 2; //Motor control Nº1
const int MC2 = 3; //Motor control Nº2
const int POT = 0; //Reading variable resistor at ANALOG PIN A0
                   //<----------- 462--512--562---------->
                   //+ to - REAR |....STOP....| AHEAD - to +

int val = 0; // Storage value of variable resistor
int VELOCIDAD = 0; //Storage velocity (from 0 to 255)

void setup()
{
Serial.begin(9600);
pinMode (EN,OUTPUT);
pinMode (MC1,OUTPUT);
pinMode (MC2,OUTPUT);
brake (); //Reset devide with stopped engine
}

void loop()
{
  val = analogRead (POT);
  Serial.println(val);
  delay (100);
  
//Working AHEAD
  if(val > 562)
  {
    VELOCIDAD = map(val, 563, 1023, 0, 255);
    G_right(VELOCIDAD);    
  }

  //Working REAR
  if(val < 462)
  {
    VELOCIDAD = map(val, 461, 0 , 0, 255);
    G_left(VELOCIDAD);
  }

  //BRAKE
  else
  {
    brake();
  }

}
  // Function AHEAD: Engine goes forward with a variable speed from 0 to 255
  void G_right (int rate)
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, HIGH);
    digitalWrite (MC2, LOW);
    analogWrite (EN, rate);
  }

  // Funtion REAR: Engine goes reverse with a variable speed from 0 to 255
  void G_left (int rate)
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, LOW);
    digitalWrite (MC2, HIGH);
    analogWrite (EN, rate);
  }

  // Function STOP: Engine break
  void brake()
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, LOW);
    digitalWrite (MC2, LOW);
    analogWrite (EN, HIGH);
  }

Te falta un else

Si el valor es mayor que 512 gira a la derecha, pero despues comparas con <462 y si no lo es frena.

//CONTROL DE VELOCIDAD PARA MOTOR DE CC CON INTEGRADO L293DNE "PUENTE EN H"

const int EN = 9; //Enable medium bridge (1 - right of 2 - left)
const int MC1 = 2; //Motor control Nº1
const int MC2 = 3; //Motor control Nº2
const int POT = 0; //Reading variable resistor at ANALOG PIN A0
                   //<----------- 462--512--562---------->
                   //+ to - REAR |....STOP....| AHEAD - to +

int val = 0; // Storage value of variable resistor
int VELOCIDAD = 0; //Storage velocity (from 0 to 255)

void setup()
{
Serial.begin(9600);
pinMode (EN,OUTPUT);
pinMode (MC1,OUTPUT);
pinMode (MC2,OUTPUT);
brake (); //Reset devide with stopped engine
}

void loop()
{
  val = analogRead (POT);
  Serial.println(val);
  delay (100);
 
//Working AHEAD
  if(val > 562)
  {
    VELOCIDAD = map(val, 563, 1023, 0, 255);
    G_right(VELOCIDAD);   
  }
  else // <-- Te falta este else.  
  if(val < 462) //Working REAR
  {
    VELOCIDAD = map(val, 461, 0 , 0, 255);
    G_left(VELOCIDAD);
  }
  else //BRAKE
  {
    brake();
  }

}
  // Function AHEAD: Engine goes forward with a variable speed from 0 to 255
  void G_right (int rate)
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, HIGH);
    digitalWrite (MC2, LOW);
    analogWrite (EN, rate);
  }

  // Funtion REAR: Engine goes reverse with a variable speed from 0 to 255
  void G_left (int rate)
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, LOW);
    digitalWrite (MC2, HIGH);
    analogWrite (EN, rate);
  }

  // Function STOP: Engine break
  void brake()
  {
    digitalWrite (EN, LOW);
    digitalWrite (MC1, LOW);
    digitalWrite (MC2, LOW);
    analogWrite (EN, HIGH);
  }

Muchas gracias Victorjam.
Lo compilo y te comento a ver que tal.
Un saludo y mogollón de gracias

Funcionando Victorjam.
Gracias por la ayuda.