Carro Bluetooth

Saludos, e recreado un proyecto usando un arduino uno, el cual consiste en controlar un carrito por bluetooth y que ademas esquive obstáculos, y el carrito anda bien hasta después de unos segundos, ya que este se bloquea, deja de funcionar la app y el carrito se queda con la ultima instrucción recibida hasta que se desconecta de la batería, estoy usando un arduino uno, el bluetooth que manejo es hc 05, la app le cree en app inventor. les comparto el código y la programación por bloques. de antemano gracias por la ayuda.

/************ VARIALBES DE CONTROL ************/
char input;
int Trig = 2, Echo = 3;
long duracion, distancia;

/************** ACTIVAR PINER DE ENTRADA Y SALIDA  *****************/

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  DDRB=B00001111;

  pinMode(Trig,OUTPUT);
  pinMode(Echo,INPUT);
  
}

/*********** PROGRAMA PRINCIPAL *****************/

void loop() {

  Ultra();
  Serial.println(distancia);
  
  if(distancia<=10){          //reversa para que no choque 
    PORTB=B00000000;
    delayMicroseconds(100);
    PORTB=B00000101;
    delay(500);
    PORTB=B00000000;
  }
  
  Motores();
  
}

/************SENSOR ULTRASONICO*******************/
void Ultra (){
  digitalWrite(Trig,LOW);
  delayMicroseconds(4);
  digitalWrite(Trig,HIGH);
  delayMicroseconds(10);
  digitalWrite(Trig,LOW);

  duracion = pulseIn(Echo,HIGH);
  distancia = (duracion/2)/29;
  
}

/************* MANEJO DE MOTORES **************/
void Motores(){
  if(Serial.available()>0){
    input=Serial.read();
  }
  if(input=='1'){
    digitalWrite(LED_BUILTIN,HIGH);
    PORTB=B00001010;
  }
  if(input=='2'){
    digitalWrite(LED_BUILTIN,HIGH);
    PORTB=B00000110;
  }
  if(input=='3'){
    digitalWrite(LED_BUILTIN,HIGH);
    PORTB=B00001001;
  }
  if(input=='4'){
    digitalWrite(LED_BUILTIN,HIGH);
    PORTB=B00000101;
  }
  if(input=='0'){
    digitalWrite(LED_BUILTIN, LOW);
    PORTB=B00000000;
  }
}

Sin título.jpg