Como ultilizar o mesmo botao para ligar e desligar

Galera, sou novo aqui e estou com uma duvida, montei um projeto cujo posso ligar e desligar uma lâmpada através de um controle remoto infravermelho, porem, estou utilizando botões diferentes para cada função. Gostaria de fazer um mesmo botão do controle para ligar e desligar o relê de acionamento da lâmpada.

Outra duvida: Porque no começo do código não posso usar o comando “#define” para definir as portas que utilizarei no Arduino?

Código:

#include <IRremote.h>

int RECV_PIN = 11;

const int Rele = 53;

IRrecv irrecv (RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
pinMode (Rele, OUTPUT);
irrecv.enableIRIn(); // Start the receiver
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}

if (results.value == 0x490) {
digitalWrite (Rele, HIGH);}

if (results.value == 0xC90) {
digitalWrite (Rele, LOW);}

}

Penso que qualquer coisa assim:

#include <IRremote.h>

#define RECV_PIN 1
#define Rele 53

#define DESLIGADO 0
#define LIGADO 1

IRrecv irrecv (RECV_PIN);

decode_results results;

int estado;

void setup()
{
  Serial.begin(9600);
  pinMode (Rele, OUTPUT);
  estado = 0;
  digitalWrite (Rele, LOW);
  
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }

  if (results.value == 0x490) {
    if (estado == DESLIGADO) {
      estado = LIGADO;
      digitalWrite (Rele, HIGH);
    }
    else {
      estado = DESLIGADO;
      digitalWrite (Rele, LOW);
    }
  }

}

deve fazer o que se pretende.