Stepper se queda energizado cuando suelto el Joystick (SOLUCIONADO)

Ya veo lo que esta mal, jamas da SpeedX = 0 o por instantes de tiempo muy chicos entonces no se detiene.

Cuando tienes un joystick hay que asegurarse que al soltar el joystick ese umbral se mantenga. Por eso olvida todo y concéntrate en el joystick

algo como esto

void loop() {
  
  ValueX = analogRead(Joystick);
  if (ValueX <= TresholdDown) {
      SpeedX = - 500;
      MoveX = true;      
  }
  else if (ValueX >= TresholdUp) {
      SpeedX = 500;
      MoveX = true;      
  } else {
     SpeedX =  0;
     MoveX = false;
  }

  MotorControl(SpeedX);
}
 
void MotorControl(bool MoveX) {
 
  if (MoveX) {
      MotorX.setSpeed(SpeedX);
      MotorX.run();
  } 
  else {
      MotorX.stop();
  }
}