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);
}
}
}
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).
Por favor, incluye todos los datos que se te ocurran, por tontos que te parezcan.
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)
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?
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.