Duda ciclo

Hola estoy haciendo un proycto un botsumo el problema es que tengo un cny delantero y me marca correctamente al igual que mis 2 sharp, individualmente funcionan ambos el problema es que si realiza una opcion despues se quedan quietos los motores pero en pantalla sigue marcando los sensores

int izqB = 5; 
int izqA = 6; 
int derB = 9; 
int derA = 10; 
int vel = 255; // Velocidad de los motores (0-255)
int sensorpin1 = A1; //sensores sharp
int sensorpin2 = A6;
int sensorpin3 = A3;
int sensorpin4 = A4;
//cny
int cnydel = 4;
int cnytra = A0;
int val1 = 0; // valores para comparar sensores sharp
int val2 = 0;
int val3 = 0;
int val4 = 0;
//CNY
int val5 =0;
int val6 =0;
void setup()  { 
Serial.begin(9600);
  pinMode(derB, OUTPUT);
  pinMode(derA, OUTPUT);
  pinMode(izqB, OUTPUT);
  pinMode(izqA, OUTPUT);
  delay (5000);
 } 
 
void loop()  { 
     
    val5 = digitalRead (cnydel);
    val6 = analogRead  (cnytra);
    val1 = analogRead(sensorpin1);//delantero izquierdo
    val2 = analogRead(sensorpin2);//delantero derecho
    val3 = analogRead(sensorpin3);//costado izquierdo
    val4 = analogRead(sensorpin4);//costado derecho
    
 Serial.print (val5);
    Serial.print ("\n");
    delay (500);
   if (val5 == 1) {
    analogWrite(derB, vel);  // atras  2 segundos
    analogWrite(izqB, vel);
    Serial.print (val5);
    Serial.print ("val5");
    Serial.print ("\n");
    delay (500);
   }
   if (val5 != 1) {
     if ((val1>290) &&  (val2>290)){

        analogWrite(derA, vel);  // adelante  2 segundos
    analogWrite(izqA, vel);
Serial.print (val1);
    Serial.print ("val1");
    Serial.print ("\n");
    delay (500);
    Serial.print (val2);
    Serial.print ("val2");
    Serial.print ("\n");
    delay (500);
  
}
}
}

Es un sumo o un minisumo?

Con que placa Arduino lo hiciste?

Tienes un diagrama de conexiones?

Por lo que veo en tu código tienes tus sensores conectados a puertos analógicos. Es necesario saber la cantidad de sensores que estás usando (y para mi curiosidad de que tipo). :wink:

Por favor, incluye todos los datos que se te ocurran, por tontos que te parezcan.

Saludos!

PUENTE H (L293D)
SENSOR DE DISTANCIA SHARP (10CM~80CM) 4
SENSOR CNY70 2
MOTORREDUCTORES PARA ROBÓTICA(1.5KG ) 2
arduino mega


ps el un esquema lo tenia, pero como hice el cambio de arduino no creo que sea de mucha utilidad

esa parte funciona bn si lo dejo probando las ordenes

en cny por ahora estoy intentando solo con el delantero que esta en digital el resto de los sensores son analogos osea 5
robot sumo

Bien!

Veo algunas cositas que me gustan.

1.- Usar una Mega
2.- Que sea un SUMO porque tienes lugar para poner todo lo que se te de en gana.
3.- Que uses 4 CNY-70, es lo más lógico para detectar la línea blanca del borde aún reculando (léase retrocediendo) :smiley:

Ahora, tengo una duda. Estás usando 5 Sharp de 80cm de alcance?

Por lo que veo tienes dos apuntando hacia adelante y 3 más, cada uno para el resto de los flancos. Me equivoco?

Con respecto a tu código, quiero creer que tus "Serial.print" y "Delay" que se ven son para las pruebas de calibración y que cuando se utilice en el robotito no estarán para la competencia.

Puedes pegar el código que correspondería al funcionamiento en competencia?

Gracias!

si claro es solo para testear

int izqB = 5; 
int izqA = 6; 
int derB = 9; 
int derA = 10; 
int vel = 180; // Velocidad de los motores (0-255)
int sensorpin1 = A1; //sensores sharp
int sensorpin2 = A6;
int sensorpin3 = A3;
int sensorpin4 = A4;
//cny
int cnydel = 4;
int cnytra = A0;
int val1 = 0; // valores para comparar sensores sharp
int val2 = 0;
int val3 = 0;
int val4 = 0;
//CNY
int val5 =0;
int val6 =0;
void setup()  { 
Serial.begin(9600);
  pinMode(derB, OUTPUT);
  pinMode(derA, OUTPUT);
  pinMode(izqB, OUTPUT);
  pinMode(izqA, OUTPUT);
  delay (5000);
 } 
 
void loop()  { 
     
    val5 = digitalRead (cnydel);
    val6 = analogRead  (cnytra);
    val1 = analogRead(sensorpin1);//delantero izquierdo
    val2 = analogRead(sensorpin2);//delantero derecho
    val3 = analogRead(sensorpin3);//costado izquierdo
    val4 = analogRead(sensorpin4);//costado derecho
      
         if ((val1>290)  && (val2>290)){
          analogWrite(derA, vel);  
          analogWrite(izqA, vel); 
             }else {
          if (val3>250){
               analogWrite(izqA, vel); 
              analogWrite(derA, 0);
              delay(200);
          }else{
            if (val4>250){
                 
           analogWrite(derA, vel);  
            analogWrite(izqA, 0);
            delay(200);
           }
          }
    }
    }



alli los sharp funcionan correctamente pero cuando pongo cny se queda parado pero las lecturas me las hace bien, sera el cambio brusco o que se puede hacer

Si tienes la posibilidad de tomar una foto de tu manera de conectar los sensores a la MEGA, te lo agradecería, porque para mi hay un error en el uso de los puertos.

Sobretodo en los que le dan señal a los motores, para que hagan lo que tienen que hacer, ya sea avanzar, frenar o retroceder.

Otro tema que puede hacer que tus motores no funcionen es si los tienes conectados directamente a tu MEGA y no usas un fuente de poder exclusiva para ellos. O no exclusiva, pero si al menos que no pase (la alimentación) a través de la Arduino.

Otro punto que te debe de estar molestando es que tengas algunos sensores en puertos digitales y otros en analógicos. Pon todos en el mismo tipo y luego me cuentas.