Ayuda o consejo con un código por favor

hola a todos

sabes aun tengo un problema de rebote con led mas interruptor, este sigue encendiendo se, he puesto resistencia en interruptor de 10 kilo ohm, están soldados todos los pines me recomendaron un vídeo para ver y un código y nada llevo días y días pegado en lo mismo agradecería un consejo o revisión de mi código no se en que esta fallando, algún genio de arduino que me ayude se lo agradecería.

como dato tengo una shield. que manda una señal a otro arduino en forma inalambrica y este activa un relay.

este es el codigo de arduino emisor

int estado = 0; //GUARDA EL ESTADO DEL PULSADOR
int estadoAnterior = 0; //GUARDAR EL ESTADO ANTERIOR DEL PULSADOR
int salida = 0; //0=LED SI ESTA APAGADO, 1=LED SI ESTA ENCENDIDO

void setup() {
  pinMode (2, INPUT);     // DEFINIR EL PULSADOR COMO ENTRADA
  pinMode (13, OUTPUT);   // DEFINIR EL LED COMO SALIDA
}

void loop() {
  estado = digitalRead (2); //LEER EL ESTADO DEL PULSADOR
  
  if((estado == HIGH) && (estadoAnterior == LOW)){ //SI EL ESTADO ES ALTO Y EL ESTADOANTERIOR ES BAJO
    salida = 1 - salida;                        //LA SALIDA ES 1 MENOS EL ULTIMO VALOR DE SALIDA
    delay (15);
  }
  
  estadoAnterior = estado; // guarda el estado actual
  
  if(salida == 1) { //SI la salida = 1
    
  digitalWrite(13, HIGH); //ENCENDER EL LED
}
else { //SI NO ES ASI ENTONCES
  digitalWrite (13, LOW); //APAGAR EL LED

  }
}

Creo que lo que estás buscando se conoce como debounce. Aquí hay un video en español donde lo explica mejor: https://www.youtube.com/watch?v=NPnwi0Wwb90

No probé el código, pero si cualquier cosa falla, ya tienes el video para que lo puedas corregir.

int estado = 0; //GUARDA EL ESTADO DEL PULSADOR
int estadoAnterior = 0; //GUARDAR EL ESTADO ANTERIOR DEL PULSADOR
int salida = 0; //0=LED SI ESTA APAGADO, 1=LED SI ESTA ENCENDIDO
int debounce = 0;

void setup() {
  pinMode (2, INPUT);     // DEFINIR EL PULSADOR COMO ENTRADA
  pinMode (13, OUTPUT);   // DEFINIR EL LED COMO SALIDA
}

void loop() {
  estado = digitalRead (2); //LEER EL ESTADO DEL PULSADOR
  
  if((estado == HIGH) && (estadoAnterior == LOW)){ //SI EL ESTADO ES ALTO Y EL ESTADOANTERIOR ES BAJO
    salida = 1 - salida;                        //LA SALIDA ES 1 MENOS EL ULTIMO VALOR DE SALIDA
    delay (15);
  }
  
  estadoAnterior = estado; // guarda el estado actual
  if(millis() - debounce > 150){
    if(salida == 1) { //SI la salida = 1    
        digitalWrite(13, HIGH); //ENCENDER EL LED
    }else { //SI NO ES ASI ENTONCES
      digitalWrite (13, LOW); //APAGAR EL LED
    }
    debounce = millis();
  }
}

Yo me cansé de escribir tanto código y uso una librería que me da mucho resultado. Se llama Switch

Che SURBYTE...a esa libreria que vos decis hay que introducirle de ella algun valor en nuestro codigo o es llamarla como libreria y listo? Si es asi esta bastante buena.