
Esta es la entrega del código que utilicé para hacer un SumoBot usando arduino. En esta primera parte anexo los códigos, posteriormente incluiré el diagrama de los circuitos y fotos del mismo.
__________________________________________________________________
/*Sumobot sobre piso blanco y círculo negro
el valor de color negro en los sensores infrarrojos
es de 480 .Se usó la comunicación serial para obtener estos valores.
*/
//Declaración de los pines
int motorR1 = 3;
int motorR2 = 4; //motor derecho
int motorL1 = 5;
int motorL2 = 6; //motor izquierdo
int sensFder = 7; //sens frontal derecho
int sensFizq = 8; //sens frontal izquierdo
int sensTder = 9; //sens trasero derechp
int sensTizq = 10; //sens trasero izquierdo
int sensDel = 0; //sens IR delantero
int sensTras = 1; //sens IR trasero
//Declaración de I/O's
void setup()
{
pinMode (motorR1, OUTPUT);
pinMode (motorR2, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (sensFder, INPUT);
pinMode (sensFizq, INPUT);
pinMode (sensTder, INPUT);
pinMode (sensTizq, INPUT);
}
void loop()
{
float buf1, buf2, valord, valort;
valord=analogRead(sensDel);
valort=analogRead(sensTras);
buf1=valord*500/1024;
buf2=valort*500/1024;
//El bot se activa al presionar cualquier sensor de impacto
//si toca detecta linea blanca adelante retrocede, gira 4s. a la izquierda
//y continua haca atrás
if(buf1 >= 480) //mayor o igual que 480 es negro
{
atras();
izquierda();
delay(400);
atras();
}
//si detecta linea blanca atras avanza, gira 4s a la izquierda
//y continua haca adelante
if(buf2 >= 480) //mayor o igual de 480 es negro
{
adelante();
izquierda();
delay(400);
adelante();
}
//----------- ACCIONES IMPACTO-------------
if(digitalRead (sensFder)==HIGH )
{
golpeFder();
}
if(digitalRead (sensFizq)==HIGH)
{
golpeFizq();
}
if(digitalRead (sensTder)==HIGH)
{
golpeTder();
}
if(digitalRead (sensTizq)==HIGH)
{
golpeTizq();
}
}
//---------------MOVIMIENTOS--------------
int adelante()
{
digitalWrite (motorR1, LOW);
digitalWrite (motorR2, HIGH);
digitalWrite (motorL1, HIGH);
digitalWrite (motorL2, LOW);
}
int atras()
{
digitalWrite (motorR1, HIGH);
digitalWrite (motorR2, LOW);
digitalWrite (motorL1, LOW);
digitalWrite (motorL2, HIGH);
}
int izquierda()
{
digitalWrite (motorR1, LOW);
digitalWrite (motorR2, HIGH);
digitalWrite (motorL1, LOW);
digitalWrite (motorL2, HIGH);
delay(100);
}
int derecha()
{
digitalWrite (motorR1, HIGH); //L
digitalWrite (motorR2, LOW);
digitalWrite (motorL1, HIGH);
digitalWrite (motorL2, LOW);//L
delay(100);
}
//--------------GOLPES-------------------
int golpeFder()
{
atras();
delay(1000);
derecha();
delay(300);
adelante();
}
int golpeFizq()
{
atras();
delay(1000) ;
izquierda();
delay(300);
adelante();
}
int golpeTder()
{
adelante();
delay(1000);
izquierda();
delay(300);
atras();
}
int golpeTizq()
{
adelante();
delay(1000);
derecha();
delay(300);
atras();
}
__________________________________________________________________
12 comentarios:
Hola amigo, creo que tienes un error aqui:
//Declaración de I/O's
void setup()
{
pinMode (motorR1, OUTPUT);
pinMode (motorR2, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (motorL1, OUTPUT); //aqui
pinMode (sensFder, INPUT);
pinMode (sensFizq, INPUT);
pinMode (sensTder, INPUT);
pinMode (sensTizq, INPUT);
}
creo que en vez de como el anterior código, deberia ser asi:
//Declaración de I/O's
void setup()
{
pinMode (motorR1, OUTPUT);
pinMode (motorR2, OUTPUT);
pinMode (motorL1, OUTPUT);
pinMode (motorL2, OUTPUT);
pinMode (sensFder, INPUT);
pinMode (sensFizq, INPUT);
pinMode (sensTder, INPUT);
pinMode (sensTizq, INPUT);
}
gran proyecto!!
un saludo!
hola que tal tambien estoy interesado en construir un sumobot, tengo algunas dudas que quiza podrias ayudarme a resolver, de antemano gracias mainmen_69@hotmail.com espero podamos hacer contacto pronto
Oye cual es el codigo para el sensor infrarojo
Buenas tardes amigo, como le haría para que detecte el piso negro y linea blanca? saludos :D
Uriel,
Para que detecte el piso negro primero debes de medir el valor que obtienes sobre el color negro. Luego del blanco ambos estan en niveles muy diferentes. De que se trata tu proyecto?
disculpe estoy interesado en realizar un sumobot pero mencionas en el código sobre un sensor de impacto me gustaría saber que tipo de sensor es viable o algún pdf sobre uno para saber su funcionamiento, saludos.
BUENAS tardes no se si me puedas ayudar a realizar una programacion ya que yo no se mucho de como programar, realizare un robot sumo con arduino solo usare un sensor ultrasonico y dos motores me gustaria contactarte para explicarte la logica que usare y saber si me podrias ayudar con ella
escríbeme a mi correo felipequinonez@gmail.com y dame más detalles de cómo esperas usar el sensor :)
Saludos
Hola que tal muy buenas noches una pregunta como podria conocer el valor inverso es decir el doyo es negro y la linea blanca
hola me podrías decir que sensores de impacto usas?
Diculpa, que sensores infrarojos utilizaste??
HOLA,
int sensFder = 7; //sens frontal derecho
int sensFizq = 8; //sens frontal izquierdo
int sensTder = 9; //sens trasero derechp
int sensTizq = 10; //sens trasero izquierdo
int sensDel = 0; //sens IR delantero
int sensTras = 1; //sens IR trasero
CUALES SON LOS INFLARROJOS Y CUALES EL ULTRASONICO?
Publicar un comentario