No logro detener un motor DC, luego de la lectura de una entrada análoga

Soy nuevo en el foro, y tengo un problema con mi proyecto para el control de mis motores DC, la idea es que al superar un umbral en la lectura de la entrada análoga, el motor DC gire hacia un sentido, y que al no superar ese umbral (establecido en 256) , el motor gire hacia el otro lado pero solo por 3 segundos, luego de estos 3 segundos el motor se detiene y no gira a ningún lado, a menos que vuelva a superar el umbral establecido en 256, según la lectura de 0 a 1023.
Los 3 segundos los estoy contando con la Función millis, el problema es que al pasar los 3 segundos girando hacia el lado contrario, el motor no se detiene y sigue girando, en un bucle infinito, pero si pega un “pequeño salto” justo a los 3 segundos, por lo que creo es que me falta alguna variable o algo que haga que se detenga por completo y no entre nuevamente al loop del umbral menor a 256, para que no siga girando.

Les dejo el codigo de lo que tengo, estoy ocupando un integrado L293D (no tengo ningún tipo de problemas con la corriente ni nada, solo es mi problema de programación) , con dos motores, pero ambos motores deben moverse de igual forma por lo que tengo comentado las funciones del segundo motor.

Les dejo el código, Saludos

const int senal = 5; // PWM se conecta al pin 1 del puente-H
const int senal2 = 3; //PWM se conecta al pin 9 del puente H
const int in1 = 7; // Entrada 2 del puente-H motor 1
const int in2 = 4; // Entrada 7 del puente-H motor 1
const int in3= 8; // Entrada del puente H motor 2
const int in4= 9;// Entrada del puente H motor 2
int pote= A0;
int valorpote;

unsigned long tiempoActual = 0;    // Tiempo en el mismo momento en el que pulsamos el botón
unsigned long tiempoAnterior = 0;  // Cuándo fue la última vez que se pulsó el botón

void setup() 

{

Serial.begin(9600); //Abre el puerto serie a 9600 bps

pinMode(in1, OUTPUT); 
pinMode(in2, OUTPUT); 
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
//se definen como salidas de señal, las entradas al puente H

}

void loop() 

{ 
valorpote=analogRead(pote); //valor análogo leído desde un potenciometro
Serial.println(valorpote);

if (valorpote > 256) {
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
//motor 1
//digitalWrite(in3,LOW);
//digitalWrite(in4, HIGH);
//motor 2
}

if (valorpote <= 256){
  tiempoActual = millis(); 
  digitalWrite(in1,HIGH);
  digitalWrite(in2, LOW);
//motor 1
  //digitalWrite(in3,HIGH);
  //digitalWrite(in4, LOW);
//motor 2
}

// Si el tiempo transcurrido es mayor que 3 segundos el motor no debe girar a ninguno de los dos lados
if (tiempoActual - tiempoAnterior > 3000) {
  digitalWrite(in1,LOW);
  digitalWrite(in2,LOW);
//motor 1
  //digitalWrite(in3,HIGH);
  //digitalWrite(in4, LOW);
//motor 2

tiempoAnterior = tiempoActual;
}

}

Ojo a esto:

// Los cambios se explican en los comentarios
void loop()

{
  tiempoActual = millis(); // Esto va de primero. Efectivamente actualiza el "tiempo actual" en cada iteración
  valorpote = analogRead(pote);
  Serial.println(valorpote);

  if (valorpote > 256) {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    tiempoAnterior = tiempoActual; // El punto de partida (tiempoAnterior) se tiene que estar actualizando mientras se mantenga aquí
  } else {
    if (tiempoActual - tiempoAnterior >= 3000) { // Cuando se pasa a esta parte, tiempoAnterior ya no se actualiza; por lo que podemos decir que aquí comienza la cuenta regresiva.
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      // Esto es lo que ocurre si se superan los 3 segundos y no se regresa el código anterior (valorpote vuelva a ser >256)
    } else {
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);
      // Esto es lo que ocurre si aún no se superan los 3 segundos.
    }
  }
}

Quizá parezca que falta algo, posiblemente sean las líneas que tenías comentadas; supuse que no había que considerarlas para esta demostración.

PD: observa cómo yo acabo de postear código, lo hice encerrándolo entre las etiquetas generadas por el botón </>; tu deberías hacer lo mismo.
No lo digo yo, lo dicen las reglas.

Muchas gracias ya arregle lo del código.
Respecto a tu respuesta me sirvio, lo único si es que tuve que cambiar el sentido del motor ya que en el código que colocaste quedo para ambos umbrales el sentido del motor hacia el mismo lado.
Muchas gracias