Problema arranque robot sumo

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