Hola buenas a todos, tengo que hacer un robot para un trabajo de clase y estoy un poco perdido...
Consiste en :
El robot tiene dos ruedas y utilizan servomotores de 360º.
Hay un campo Como el de la foto. Mi robot se colocará en una zona y otro robot se colocará en la otra. El robot tiene que desplazarse por el campo e ir recogiendo objetos y llevándolos a su zona (he pensado que lo mas fácil es que los arrastre para llevarlos). Al principio, habrá objetos en los puntos rojos de la foto, también estarán colocados de forma aleatoria´y según se llevan a la zona, los volverán a colocar en otro sitio aleatorio. El robot que recolecte mas objetos ganará.
He conseguido que el robot siga la línea un poco pero se vuelve loco y empieza a dar vueltas. Los sensores infrarrojos son los CNY70. Me gustaría saber como evitar que se vuelva loco. Y que cumpla con los objetivos que he dicho.
¿Que podría hacer para saber en que posición esta el robot y así saber donde esta mi zona?
También lleva ultrasonidos para detectar los objetos.
Las fotos deben subirse usando las normas del foro.
Y tu código para ver porque se vuelve loco?
Pon el esquema que estas usando para los sensores tmb!
El código es este:
#include <Servo.h>
#include <MotorTubot.h>
//Pines de conexion de los motores
int pinmotorIzda = 9;
int pinmotorDcha = 10;
MoverTubot tubot;
//Ejemplo que muestrea los sensores infrarojos y muestra el valor obtenido por pantalla
// Declaración de los pines de los sensores
int pinInfraredRight = A1;
int pinInfraredLeft = A2;
// Declaración de la variables donde se guarda el valor de los sensores
int infraredRight;
int infraredLeft;
void setup(){
Serial.begin(19200); // Se configura la comunicacion serie a 19200 baudios
// Configuramos los motores y sus correspondientes PWM
// pin motor izq || pin motor drch|| punto medio PWM izq || punto medio PWM drch
tubot.begin(pinmotorIzda , pinmotorDcha); //1238 ,1250
}
void loop(){
delay(200);
// Se lee el valor de los sensores.
infraredRight = analogRead(pinInfraredRight);
infraredLeft = analogRead(pinInfraredLeft);
// Se envía al ordenador el valor de los sensores
Serial.println("SensorIzd SensorDer ");
Serial.print(infraredLeft);
Serial.print(" | ");
Serial.println(infraredRight);
if (infraredRight < 300 && infraredLeft < 300)
tubot.recto(50);
else if (infraredRight > 300 && infraredLeft < 300)
{tubot.izda (40);
delay (60);
}
else if (infraredRight < 300 && infraredLeft > 300)
{tubot.dcha (40);
delay (60);
}}
y estas las librerías:
libreria Tubot2016
libreria DistanceSRF04
Tengo la guía de como poner los sensores: montaje sensores
Muchas gracias a todos.