Error al encender y apagar el sensor HC-SR04 con el mando y led infrarojo 1838t

Tengo un arduino Mega2560 y estoy tratando de controlar el encendido y apagado del sensor por el mado a distancia, pero solo me deja activarlo, y se empieza a ejecutar ,pero no he podido lograr desactivarlo con algun o con el mismo boton. Ya utilice una recomedacion pero sigue igual. Gracias y disculpen las molestias.

#include <IRremote.h>

#define trigPin 9
#define echoPin 10
const int RECV_PIN = 7;
const int ledPinR = 4 ;
const int ledPinY = 5 ;
const int buzzer = 11;
bool alarmaActivada = false;
long duration;
int distance;
//const int ledPinG = 6 ;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long key_value = 0;

void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(ledPinR, OUTPUT);
  pinMode(ledPinY, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer, OUTPUT);
}
void loop(){
// Lees el resultado del decoder.
if (irrecv.decode(&results)) {
    if (results.value == 0xFFC23D) {
      // Activamos/Desactivamos la alarma.
  if ( alarmaActivada==false ) alarmaActivada=true;
  else alarmaActivada=false;
    }
}

if ( alarmaActivada ) {// a partir de aqui el se empieza a ejecutar sin parar y no me lee si aprieto otro boton
   digitalWrite(trigPin, LOW);
          delay(90);
           // Trigger the sensor by setting the trigPin high for 10 microseconds:
          digitalWrite(trigPin, HIGH);
          delay(100);
          digitalWrite(trigPin, LOW);
           // Read the echoPin, pulseIn() returns the duration (length of the pulse) in microseconds:
          duration = pulseIn(echoPin, HIGH);
         // Calculo la distancia
          distance= duration*0.034/2;
          if (distance< 60){
          alarma(buzzer);
           parpadeoLed(ledPinR);
           delay(10);
           parpadeoLed(ledPinY);
          //digitalWrite(ledPinY, LOW);
          Serial.print("PELIGRO ");
          digitalWrite(ledPinR, HIGH); 
          }
           else{  
           //digitalWrite(ledPinR, LOW);
           digitalWrite(ledPinY, HIGH);
           digitalWrite(buzzer, LOW);
           }
           Serial.print("Alarma activa ");
            Serial.print("distancia = ");
            Serial.print(distance);
            Serial.println(" cm");
       }}
void alarma(int buzzer){
          digitalWrite(buzzer, HIGH);
          delay(10);
          digitalWrite(buzzer, LOW);
          delay(10);
          digitalWrite(buzzer, HIGH);
          delay(50);
          digitalWrite(buzzer, LOW);
          delay(50);
           digitalWrite(buzzer, HIGH);
          delay(10);
          digitalWrite(buzzer, LOW);
          delay(10);
          digitalWrite(buzzer, HIGH);
          delay(30);
          
  }
  void parpadeoLed(int ledPinR){
          digitalWrite(ledPinR, HIGH);
          delay(10);
          digitalWrite(ledPinR, LOW);
          delay(10);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
          digitalWrite(ledPinR, HIGH);
          delay(20);
          digitalWrite(ledPinR, LOW);
          delay(20);
    }

Hola y bienvenido al foro.

Te recomiendo que te leas las NORMAS para que aprendas a postear correctamente código, imagenes, enlaces, errores, etc.

En tu caso también editar el título del post con algo que referencie tu problema, todo lo que incluya "ayuda" sin especificar nada más, es un poco feo, imagina el foro lleno de "ayuda", "ayuda"....

También indicarte que por que hagas doble posteo no te van a atender más rápido, y ya has posteado tu duda en el foro de inglés y en el español.

La solución por tu problema pasar por usar una variable. Llamémosla "alarmaActivada", cuando recibas el código del botón tenemos que ver si esta activa y la apagamos, o si no lo está con lo que la encendemos.

bool alarmaActivada = false;
void loop(){
// Lees el resultado del decoder.
if (irrecv.decode(&results)) {
    if (results.value == 0xFFC23D) {
    	// Activamos/Desactivamos la alarma.
	if ( alarmaActivada==false ) alarmaActivada=true;
	else alarmaActivada=false;
    }
}

if ( alarmaActivada ) {
  //Comprobamos el sensor y hacemos lo que haga falta.
}
}

muchas gracias por la ayuda pero no me funciona sigue igual, ya edite el post.

Cuando publiques un código con el que tienes problemas no publiques lo que TU crees que no funciona.
Publica TODO, y por qué?
Porque nosotros debemos ver todo el código ya que a veces hay que verificar como has definido las variables, las librerías que están en uso y otras como has definido los objetos.

Victorjam te hay hecho un código que habitualmente debiera funcionar pero.. no sabemos como lo has puesto en tu IDE y ahi comienza el NO ME FUNCIONA, esto NO ANDA, y cosas similares.

Por favor, lee las normas del foro, y siempre publica todo el código, una vez hecho, SI, nos concentramos en la parte del código que pueda tener problemas.

Recuérdalo.