mi ciclo se rompe no se por que

hola lo que pasa es que el programa ejerce una sola función y luego deja de funcionar pero todo parece perfecto

//pines para los motores
int mot1 = 7; //motor 1
int mot2 = 10; //motor2
int izqA = 9; //control de motores
int izqB = 8;
int derA = 11;
int derB = 12;
int vel = 2500;
int vel2 = 180;
///////////////////
//sensores sharp
int sensorpin1 = 1;
int sensorpin2 = 6;
int sensorpin3 = 3;
int sensorpin4 = 4;
int sensorpin5 = 5;
/// valores para comparar sensores sharp
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
///declaracion de cny
int iz1 = 8;  // 7
int iz2 = 10; //5
int de1 = 9; //6
int de2 = 12; //4
/// valores para comparar  sensor cny
int val6 = 0;
int val7 = 0;
int val8 = 0;
int val9 = 0;

void setup() {
  Serial.begin(9600);
  pinMode (mot1, OUTPUT);  //motores
  pinMode (mot2, OUTPUT);
  pinMode(derA, OUTPUT);  //control del motor como salidas
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
pinMode(iz1,INPUT); //cny
pinMode(iz2,INPUT);
pinMode(de1,INPUT);
pinMode(de2,INPUT);
}

void loop() {
  delay(5000);

  int VaRsi = 1;
  while (VaRsi == 1) {
    sensor();
}
}

  void adelante(){
   digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel); 
    digitalWrite(izqA, vel);
}
void atras (){
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derB, vel); 
    digitalWrite(izqB, v el);  
}
void derecha (){
    digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
}
void izquierda (){
  digitalWrite(mot1,1);
    digitalWrite(mot2,0);
    digitalWrite(derA, vel);  // izquierda 
    digitalWrite(izqA, 0);
}

  void baia (){
     val1 = analogRead(sensorpin1);//delantero izquierdo
    val2 = analogRead(sensorpin2);//delantero derecho
    val3 = analogRead(sensorpin3);//costado izquierdo
    val4 = analogRead(sensorpin4);//costado derecho
    val5 = analogRead(sensorpin5);//trasero
    
 if (val1 && val2 > 250){
    adelante();
}
else{
  if (val3>250){
    derecha ();
    }
    else {
  if(val4>250){
    izquierda();
}
    
  else {
    if (val5>250){
    derecha();
          }
          
        }
      }
    }
  }

void sensor (){
  val6=analogRead (iz1); //izquierdos delantero y trasero
 val7 =analogRead (iz2);
 val8=analogRead (de1); //derecho .....
 val9=analogRead (de2);
 
 if ((val6 >= 900) && (val7 >= 300)) {
        derecha ();
 
    }else
    if ((val8 >= 900) && (val9 >= 300)) {
    izquierda();
   
    }else
    if ((val7  || val9 >= 300)) {
    adelante;
   
    
    }else
    if ((val6 || val8 >= 900)) {
    atras(); 
    
    }else 
    if ((val6 || val8 >= 900) && (val5>250)) {
     derecha();
    }else 
  if ((val7 && val9 <= 300) && (val6 && val8 <=  800)){
    baia ();
  }
}

Para que esto? un simple while(1) es lo mismo

void loop() {
  // olvidemos el delay(5000);
  int VaRsi = 1;
  while (VaRsi == 1) {
    sensor();
  }

pero reemplaza todo por

void loop() {
    sensor();
}

y el delay(5000); lo pones en el final del setup.

uno de los principales errores esta acá.
en la subrutina sensor() repites mucho este error

  if ((val7  || val9 >= 300)) {

esto asi se cumple siempre como verdadero porque val7 es >0 casi siempre.
debiera escribirse asi

  if ((val7  >= 300) || (val9 >= 300)) {

val7 es un entero al igual que val9
hacer val7 !! val9 siempre te dara una suma binaria y tu quieres comparar el sensor contra un valor o cualquiera de los dos mejor dicho si son mayores a 300
corrige los demás

hola hice la corrección del codigo

//pines para los motores
int mot1 = 7; //motor 1
int mot2 = 10; //motor2
int izqA = 9; //control de motores
int izqB = 8;
int derA = 11;
int derB = 12;
int vel = 2500;
int vel2 = 180;
///////////////////
//sensores sharp
int sensorpin1 = 1;
int sensorpin2 = 6;
int sensorpin3 = 3;
int sensorpin4 = 4;
int sensorpin5 = 5;
/// valores para comparar sensores sharp
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
int val5 = 0;
///declaracion de cny
int iz1 = 8;  // 7
int iz2 = 10; //5
int de1 = 9; //6
int de2 = 12; //4
/// valores para comparar  sensor cny
int val6 = 0;
int val7 = 0;
int val8 = 0;
int val9 = 0;

void setup() {
  Serial.begin(9600);
  pinMode (mot1, OUTPUT);  //motores
  pinMode (mot2, OUTPUT);
  pinMode(derA, OUTPUT);  //control del motor como salidas
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
pinMode(iz1,INPUT); //cny
pinMode(iz2,INPUT);
pinMode(de1,INPUT);
pinMode(de2,INPUT);
delay(5000);
}

void loop() {
    sensor();
}

  void adelante(){
   digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel); 
    digitalWrite(izqA, vel);
}
void atras (){
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derB, vel); 
    digitalWrite(izqB, vel);  
}
void derecha (){
    digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
}
void izquierda (){
  digitalWrite(mot1,1);
    digitalWrite(mot2,0);
    digitalWrite(derA, vel);  // izquierda 
    digitalWrite(izqA, 0);
}

  void baia (){
     val1 = analogRead(sensorpin1);//delantero izquierdo
    val2 = analogRead(sensorpin2);//delantero derecho
    val3 = analogRead(sensorpin3);//costado izquierdo
    val4 = analogRead(sensorpin4);//costado derecho
    val5 = analogRead(sensorpin5);//trasero
    
 if ((val1  > 250) && (val2 > 250)){
    adelante();
}
else{
  if (val3>250){
    derecha ();
    }
    else {
  if(val4>250){
    izquierda();
}
    
  else {
    if (val5>250){
    derecha();
          }
          else {
            adelante();
          }
          
        }
      }
    }
  }

void sensor (){
  val6=analogRead (iz1); //izquierdos delantero y trasero
 val7 =analogRead (iz2);
 val8=analogRead (de1); //derecho .....
 val9=analogRead (de2);
 
 if ((val6 >= 900) && (val7 >= 300)) {
        derecha ();
 
    }else
    if ((val8 >= 900) && (val9 >= 300)) {
    izquierda();
   
    }else
    if ((val7  >= 300) && ( val9 >= 300)) {
    adelante;
   
    
    }else
    if ((val6 >= 900) && (val8 >= 900)) {
    atras(); 
    
    }else 
    if ((val6 >= 900) && (val8 >= 900) && (val5>250)) {
     derecha();
    }else
    if ((val7  >= 300) && ( val9 >= 300) && (val6 >= 900) && (val8 >= 900)){
 
    baia ();
  }
}

pero cuando empieza a hacer lo que esta en "baia" que son mis sensores sharp se quedan quietos los motores

Yo arregle tus consultas if, no el sentido lógico que tienen.
Eso sin explicación lo haces tu.
mira como trabaja, paso a paso y prueba que sea lo que esperas.

dentro de “baia” imprime que valores tienen las variables “val” asi veras en en serial monitor esos valores o incluso etiquetas dentro de cada IF o Else tipo “punto1” “punto 2” y podras analizar que es lo que esta pasando viendo los valores y por donde pasa tu programa.

Yo creo que tienes un cacao impresionante con las condiciones. Tal y como lo tienes, nunca llegarás a entrar en la función baia, porque cuando se cumpla esa condición:

	else if ((val7  >= 300) && ( val9 >= 300) && (val6 >= 900) && (val8 >= 900)){
		baia ();
	}

previamente se cumple la que está en segundo lugar:

	else if ((val8 >= 900) && (val9 >= 300)) {
		izquierda();
	}

con lo que no se evaluará ninguna de las que estén a continuación.