Buena tarde a todos, he hecho mi primer intento de programación en arduino y he obtenido algo que no se que tan correcto sea, estos días son festivos y no he podido adquirir mi 2560 para probarlo, solo querría que me dieran cualquier consejo o me hicieran observaciones acerca del código que he hecho.
Se trata de un Robot Sumo de combate, y cualquier recomendación sera muy agradecida
//Programa de control del SUMOBOT:
// Por Ivan Dario molina Gastelbondo
// COD: 2012119057
const int ecob = 3; // entrada del eco trasero
const int ecod = 4; // entrada del eco derecho
const int ecoi = 5; // entrada del eco izquierdo
const int lifi = 6; // sensor de linea frontal izquiero
const int lifd = 7; // sensor de linea frontal derecho
const int liti = 8; // sensor de linea trasero izquierdo
const int litd = 9; // sensor de linea trasero derecho
const int mt1f = 10; //Motor derecho al frente
const int mt1r = 11; // motor derecho reversa
const int mt2f = 12; // motor izquierdo al frente
const int mt2r = 13; // motor izquierdo reversa
const int trig = 22; // trigger comun para todos los HC-SR04
const int ecof = 23; // entrada eco frontal
long tf;
long tb;
long td;
long ti;
int xf;
int xb;
int xd;
int xi;
void setup() {
// descripción de puertos:
pinMode(trig, OUTPUT);
pinMode(mt1f, OUTPUT);
pinMode(mt1r, OUTPUT);
pinMode(mt2f, OUTPUT);
pinMode(mt2r, OUTPUT);
pinMode(ecof, INPUT);
pinMode(ecob, INPUT);
pinMode(ecod, INPUT);
pinMode(ecoi, INPUT);
pinMode(lifi, INPUT);
pinMode(lifd, INPUT);
pinMode(liti, INPUT);
pinMode(litd, INPUT);
Serial.begin(9600);
}
void loop() {
// descripción del programa:
digitalWrite(trig, LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
tf = pulseIn(ecof, HIGH);
xf = tf*0.017; // Distancia frontal de ataque
if (xf <= 50)
{
digitalWrite(mt1f, HIGH);
digitalWrite(mt2f, HIGH);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, LOW);
}
tb = pulseIn(ecob, HIGH);
xb = tb* 0.017;
if (xb <= 30) //Distancia trasera para giro de defensa
{
digitalWrite(mt1f, HIGH);
digitalWrite(mt2f, LOW);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, HIGH);
}
ti = pulseIn(ecoi, HIGH);
xi = ti* 0.017;
if (xi <= 30) //Distancia para giro defensivo lateral
{
digitalWrite(mt1f, HIGH);
digitalWrite(mt2f, LOW);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, HIGH);
}
td = pulseIn(ecod, HIGH);
xd = td* 0.017;
if (xd <= 30) //Distancia para giro defensivo lateral
{
digitalWrite(mt1f, LOW);
digitalWrite(mt2f, HIGH);
digitalWrite(mt1r, HIGH);
digitalWrite(mt2r, LOW);
}
else // instrucciones para busqueda
{
digitalWrite(mt1f, HIGH);
digitalWrite(mt2f, HIGH);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, LOW);
delay(2000);
digitalWrite(mt1f, LOW);
digitalWrite(mt2f, HIGH);
digitalWrite(mt1r, HIGH);
digitalWrite(mt2r, LOW);
delay(3000);
}
if(pulseIn(lifi, HIGH) ) //instrucciones para evitar salir del area de combate
{
digitalWrite(mt1f, LOW);
digitalWrite(mt2f, LOW);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, HIGH);
delay(2000);
}
if(pulseIn(lifd, HIGH))
{
digitalWrite(mt1f, LOW);
digitalWrite(mt2f, LOW);
digitalWrite(mt1r, HIGH);
digitalWrite(mt2r, LOW);
}
if(pulseIn(liti, HIGH) )
{
digitalWrite(mt1f, LOW);
digitalWrite(mt2f, HIGH);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, LOW);
delay(2000);
}
if(pulseIn(litd, HIGH))
{
digitalWrite(mt1f, HIGH);
digitalWrite(mt2f, LOW);
digitalWrite(mt1r, LOW);
digitalWrite(mt2r, LOW);
delay(2000);
}
}