Buen dia con todos, tengo un inconveniente con el programa para mi robot de sumo; debo accionar el robot a traves de control IR, esperar 5 segundos y que el sumo se mueva mi problema es que al accionar el boton compara el codigo hexadecimal y arranca pero solo realiza una lectura por lo cual el robot va solo en un sentido y no realiza la busqueda del adversario; el problema es que solo ejecuta una vez el if donde se compara la distancia y no en bucle infinito. Todo esto lo estoy haciendo con un arduino nano. Ajunto el codigo a continuacion:
#include <IRremote.h>
int receptor = 3;
int PWMA = 5;
int ai2 = 6;
int ai1 = 7;
int STBY = 8;
int bi1 = 9;
int bi2 = 10;
int PWMB = 11;
int led1 = 2;
int led2 = 13;
int led3 = 4;
int lectura_distancia ;
int lectura_piso_izquierda;
int lectura_piso_derecha;
int lectura_piso_atras;
IRrecv irrecv(receptor);
decode_results codigo; //OBJETO CODIGO DE CLASE decode_result, oriundo de IRremote.h
void setup()
{
Serial.begin(9600);
pinMode(PWMA, OUTPUT);
pinMode(PWMB, OUTPUT);
pinMode(ai1, OUTPUT);
pinMode(ai2, OUTPUT);
pinMode(bi1, OUTPUT);
pinMode(bi2, OUTPUT);
analogWrite(PWMA, 255);
analogWrite(PWMB, 255);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led2, OUTPUT);
irrecv.enableIRIn(); // INICIA LA RECEPCIÓN
}
void loop()
{
if (irrecv.decode(&codigo))
{
Serial.println(codigo.value, HEX);
if (codigo.value==0xF7C03F)//CÓDIGO DEL NÚMERO CERO PARA ACTIVAR SUMO
{
digitalWrite(led3 , LOW);
digitalWrite(led2 , HIGH);
delay(5000);
digitalWrite(led2 , LOW);
digitalWrite(led1 , HIGH);
lectura_distancia = analogRead(A0);
Serial.println(lectura_distancia);
lectura_piso_izquierda= analogRead(A3);
lectura_piso_derecha=analogRead(A4);
lectura_piso_atras=analogRead(A5);
delay (500);
if (lectura_distancia > 150 ) {
adelante();
}
else {
derecha();
}
} else{}
if (codigo.value==0xF740BF)//CÓDIGO DEL NÚMERO UNO PARA DESACTIVAR SUMO
{
detener();
digitalWrite(led1 , LOW);
}
delay(500);
irrecv.resume();
}
else {
}
}
void adelante() {
digitalWrite(STBY, HIGH);
digitalWrite(ai1, HIGH);
digitalWrite(ai2, LOW);
digitalWrite(bi1, HIGH);
digitalWrite(bi2, LOW);
}
void derecha() {
digitalWrite(STBY, HIGH);
digitalWrite(ai1, LOW);
digitalWrite(ai2, HIGH);
digitalWrite(bi1, HIGH);
digitalWrite(bi2, LOW);
}
void izquierda() {
digitalWrite(STBY, HIGH);
digitalWrite(ai1, HIGH);
digitalWrite(ai2, LOW);
digitalWrite(bi1, LOW);
digitalWrite(bi2, HIGH);
}
void reversa() {
digitalWrite(STBY, HIGH);
digitalWrite(ai1, LOW);
digitalWrite(ai2, HIGH);
digitalWrite(bi1, LOW);
digitalWrite(bi2, HIGH);
}
void detener() {
digitalWrite(STBY, LOW);
digitalWrite(ai1, LOW);
digitalWrite(ai2, LOW);
digitalWrite(bi1, LOW);
digitalWrite(bi2, LOW);
}
Cualquier ayuda sera bienvenida, llevo usando arduino poco tiempo