Problema al doble giro de motores botsumo

Hola; el problema es que quiero hacer que mi bot al girar un lado ejemplo derecha gire el motor izquierdo hacia adelante y el derecho hacia atrás esto con el fin de lograr un giro mas rapido pero el problema radica que al intentarlo se queda quieto cabe aclarar que si al girar pongo que gire un solo motor no tengo problemas y me detecta normalmente

//pines para los motores 
int mot1=13; //motor 1
int mot2=10;//motor2
int izqA = 9;   //giro a hacia adelante, b hacia atras
int izqB = 8; 
int derA = 11; 
int derB = 12; 
int vel = 2500;
int vel2 =2500;
///////////////////
//sensores sharp
int sensorpin1 = 1; 
int sensorpin2 = 2; 
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 = 7;
int iz2 = 5;
int de1 = 6;
int de2 = 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);
  pinMode (mot2, OUTPUT);
  pinMode(derA, OUTPUT);
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
}

void loop(){
delay(5000); 
int VaRsi = 1;

while (VaRsi==1){  
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){  // declaramos que los dos motores se utilizaran mandando un 1
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel); 
    digitalWrite(izqA, vel);
}
else{
  if (val3>250){ //sensor costado izquierdo
    digitalWrite(mot1,1);  
    digitalWrite(mot2,1);
    digitalWrite(derB, vel2);    // derecha
    digitalWrite(izqA, vel);
    }
    else {
  if(val4>250){  //costado derecho
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel);  // izquierda 
    digitalWrite(izqB, vel2);
}
    
  else {
    if (val5>250){
    digitalWrite(mot1,2);
    digitalWrite(mot2,1);
    digitalWrite(derB, vel2);    // derecha
    digitalWrite(izqA, vel);
          }
        }
      }
    }
  }
 }

Que motores estás usando? Qué puente H estás usando?

Por lo que deduzco de tu código no estás usando un puente H y pretendes hacer funcionar los motores directamente desde la placa Arduino.

No das muchos detalles, puede ocurrir que tus motores requieran más corriente de los pobrecitos miliamperes que les puede entregar el Arduino.

Por favor, danos más detalles del hardware. Y si es posible (cosa que no dudo) fotos del robot en cuestión y circuito del mismo.

PUENTE H (L293D)
SENSOR DE DISTANCIA SHARP (10CM~80CM) 5
SENSOR CNY70 4
MOTORREDUCTORES PARA ROBÓTICA(1.5KG ) 2
LM7805
las baterias que uso son de litio 3.7 v con 3000ma
Quedando 2 en paralelo y las otras conectadas en serie para obtener un voltaje de 11.1 v y 9000 ma

Tercera entrega Botsumo - YouTube al girar a un lado lo hace con un solo motor quiero usar ambos
baterias
motorreductor
botsumo
botsumox2
volts
montaje
video

1s.png

Bien! Se nota que sabes lo que estás haciendo. Pero antes de continuar te voy a pedir un favor, edita tu último mensaje para pegar las imágenes y los enlaces como dice en las normas del foro.

Así también, en lo sucesivo, si tenemos que intercambiar códigos lo haríamos de la misma manera y todos los que lean estarán contentos de tener todo a la vista o al alcance de un click.

Gracias de antemano!

Saludos!

Si bien no estás cumpliendo con las normas del foro, veo que sólo tienes declarado un pin para cada motor. Me equivoco?

El puente H necesita de dos pines por cada motor, uno para ir hacia adelante y el otro para retroceder.

//pines para los motores 
int mot1=13; //motor 1
int mot2=10;//motor2
int izqA = 9;   //giro a hacia adelante, b hacia atras
int izqB = 8; 
int derA = 11;   // los pines son la declaracion de puente h
int derB = 12;

cuando declaro izq a es hacia adelante y b hacia atras y lo mismo con der, tambien al usarlo individualmente me funcionan de forma correcta el problema radica en usarlos ambos al tiempo en de mode de giro ( uno gira hacia adelante y otro de forma contraria)

Buenísimo! Lo único que se me ocurre que te esté molestando es esa conexión en el pin 13, yo siempre evito los pines 1, 2 y 13. Por las dudas!

ok enseguida lo pruebo pd una preguntica

//pines para los motores
int mot1 = 13; //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 = 2;
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 = 7;
int iz2 = 5;
int de1 = 6;
int de2 = 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) {
 val6=digitalRead (iz1); //izquierdos delantero y trasero
 val7 =digitalRead (iz2);
 val8=digitalRead (de1); //derecho .....
 val9=digitalRead (de2);
 if (val6 && val7 ==1){
     digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
    }else
    if (val8 && val9 ==1){
    digitalWrite(mot1,1);
    digitalWrite(mot2,0);
    digitalWrite(derA, vel);  // izquierda 
    digitalWrite(izqA, 0);
    }else
    if (val7 && val9) {
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel); 
    digitalWrite(izqA, vel);
    }else
    if (val6 && val8 ==1){
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derB, vel); 
    digitalWrite(izqB, vel);   
    }else 
    if ((val6 && val8 ==1) && (val5>250)) {
    digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
    }


    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){
    digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(derA, vel); 
    digitalWrite(izqA, vel);
}
else{
  if (val3>250){
    digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
    }
    else {
  if(val4>250){
    digitalWrite(mot1,1);
    digitalWrite(mot2,0);
    digitalWrite(derA, vel);  // izquierda 
    digitalWrite(izqA, 0);
}
    
  else {
    if (val5>250){
    digitalWrite(mot1,0);
    digitalWrite(mot2,1);
    digitalWrite(derA, 0);    // derecha
    digitalWrite(izqA, vel);
          }
        }
      }
    }
  }
}

alli esta agregado en cny pero no le daremos impotancia lo que quiero es usar un void para llamar las funciones de la siguiente forma

//motor maxima velocidad
  void adelante (){
     digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(d1,HIGH);
    digitalWrite(i1,HIGH);
    return;
    }
    void atras (){
      digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(d2,HIGH);
    digitalWrite(i2,HIGH);
    return;
    }
    void motorIadelante() {
      digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(i1,HIGH);
    digitalWrite(i2,LOW);
    }
    void motorDadelante(){
      digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(d1,HIGH);
    digitalWrite(d2,LOW);
    }
    void motorIatras(){
      digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(i1,LOW);
    digitalWrite(i2,HIGH);
    }
    void motorDatras(){
      digitalWrite(mot1,1);
    digitalWrite(mot2,1);
    digitalWrite(d1,LOW);
    digitalWrite(d2,HIGH);
    }

e invocar con el caso

else{
  if (val3>250){
motoratras;}

por ejemplo; es mas optimo asi?

aun sigo con el proble decidi testear los motores individualmente y funcionan pero no logro hacer que gire uno en na una dirección y el otro en su inversa