Remote Control operation

EN/
Right now I am programming a project in which the HC-SR04 sensor detects how close an object is. Depending on this, a series of LEDs turn on. To activate the system, the power button on the remote control is pressed and it’s received at the infrared sensor. My question comes here: how can I program it so that after pressing the same power button (in this case to turn it off) the whole system is turned off until this same button is pressed again.

ES/
Ahora mismo estoy programando un proyecto en el cual por medio del sensor HC-SR04 se detecta que tan cerca está un objeto. Dependiendo de lo cerca que este se prenden ciertos leds. Para activar el sistema, se presiona el botón de encendido de el control remoto y se recibe en el sensor infra rojo. Mi pregunta viene aquí: como hago para que luego de presionar el mismo botón de encendido en el control (en este caso para que se apague) se apague todo el sistema hasta que este mismo botón se vuelva a presionar.

The code:
#include <IRremote.h>
int receptor= A0;
IRrecv irrecv(receptor);
decode_results codigo;
const int trigger = 2;
const int echo = 3;
const int verde = 12;
const int amarillo = 11;
const int rojo = 10;
const int azul= 9;
int i=10;

void setup()
{
Serial.begin(9600);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
irrecv.enableIRIn();
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
digitalWrite(trigger, LOW);

}

void loop()
{
if(irrecv.decode(&codigo))
{
if (codigo.value==0xFD00FF){

  for(i; i>=0;i--){
    Serial.println(i);
    delay(1000);
  }
  
  	digitalWrite(azul,HIGH);
	long t;
	long d;

    digitalWrite(trigger,HIGH);
    delayMicroseconds(10);
    digitalWrite(trigger,LOW);

    t = pulseIn(echo,HIGH);
    d=t/59;

    Serial.print("Distancia del sensor de ultrasonido: ");
    Serial.print(d);
    Serial.print("cm");
    Serial.println();
    delay(100);
    if (d<60)
    {
        digitalWrite(rojo, HIGH);
        digitalWrite(amarillo, LOW);
        digitalWrite(verde, LOW);
        digitalWrite(rojo, LOW);
        delay(1000);
    }
    else if (d>=60 && d<80)
    {
        digitalWrite(rojo, LOW);
        digitalWrite(amarillo, HIGH);
        digitalWrite(verde, LOW);
    }
    else if (d>=80 && d<=100)
    {
        digitalWrite(rojo, LOW);
        digitalWrite(amarillo, LOW);
        digitalWrite(verde, HIGH);

}
}
}
}

Hello,

Something like this

if (codigo.value == 0xFD00FF)
{
  static bool enabled = false;
  enabled = !enabled;

  if (enabled)
  {
    measureDistance();
  }
  else
  {
    turnOff();
  }
}

In this case what do I use for turn off? Just put all systems in LOW?

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.