Probleme bei 433Mhz Funkuebertragung

Hallo zusammen,

ich habe ein Problem mit einer 433Mhz Funkuebertragung mit 2 Arduino Nano's.
Grundaufbau besteht aus Sender mit einem Reed-Schalter, LED und 433MHZ Sender mit Antenne und Empfaenger mit Buzzer, LED und 433MHZ Empfaenger mit Antenne.
Ziel ist es am Empfaenger einen Ton und Sound auszugeben wenn am Sender der Kontakt (Reed-Sensor) geschlossen und geoeffnet wird.

Soweit funktioniert alles wie es soll. Nur wenn ich den Reed-Schalter schliesse piepst/blinkt es zwischen 1 und 4 mal am Empfaenger.

Debugging ueber Seriellen Monitor mit simplen "prints" habe ich bereits betrieben. Hier ist das komische das mir z.B. die Schleifen das "reed_close/reed_open" jeweils nur einmal ausgeben, am Empfaenger aber das "recieved" jeweils zwischen 1 und 4 mal...
Ebenfalls den ganzen Aufbau bereits ohne LED-Codes betrieben.
Ebenfalls ohne Antennen probiert.

Wenn ich hier mit Delays arbeite, z.B. am Empfaenger die LED 250ms brennen lasse ertoent jeweils nur ein Ton. Dies ist mir aber leider eine zu lange Zeitspanne. Geht das einfach nicht schneller mit diesem Programmaufbau?
Zwecks Schalter entprellen bin ich auch schon gekommen, aber warum schreibt er mir das reed_close nur einmal hin schickt aber das Signal oefters?

Habe ich hier einen groben Denkfehler oder ist hier irgendwo der Hase im System?

Danke schonmal, Chris.

Sender:

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

const int switchPin = 7;
int LED = 3;
int state;
int lastState;
int ledState;
int helligkeit= 0; 
int fadeschritte= 5;

void setup()
{
  mySwitch.enableTransmit(10); 
  pinMode(LED, OUTPUT);
  pinMode(switchPin, INPUT);
  Serial.begin(9600);
}
void loop()
{
    analogWrite(LED, helligkeit);
    helligkeit = helligkeit + fadeschritte;
    delay(40);
    if (helligkeit == 0 || helligkeit == 255)
{
fadeschritte = -fadeschritte ;
}

state = digitalRead(switchPin);

if (state != lastState) 
  {

      if (ledState == HIGH) 
      {
        ledState = LOW;
        Serial.println("reed_open");
        mySwitch.send(5678, 24);
      }
      else 
      {
        ledState = HIGH;
        Serial.println("reed_close");
        mySwitch.send(5678, 24);
      }
   
    lastState = state;
  }
 
 digitalWrite(LED, ledState);
}

Empfänger

#include <RCSwitch.h>
int LED=12;
RCSwitch mySwitch = RCSwitch();

void setup() 
{
  Serial.begin(9600);
  mySwitch.enableReceive(0);  
  pinMode(LED, OUTPUT); 
}

void loop() 
{
  if (mySwitch.available()) 
  {
    int value = mySwitch.getReceivedValue(); 
      if (value == 5678)
    { 
Serial.println("recieved");
tone(8, 3000);
delay(25);
noTone(8);
digitalWrite(LED, HIGH); 
delay (25); 
digitalWrite(LED, LOW); 
    } 
  }
    mySwitch.resetAvailable(); 
}

Du musst für "Close" und "Open" unterschiedliche Codes einsetzen und im Empfänger auch auf die unterschiedlichen Code auswerten.

Bei dir ist Open und Close der selbe Code.

Edit:
Ein Tastenprellen kann dieses natürlich noch "verschlimmern". Soll heißen, da tritt das Signal schon mehrfach auf. Taster also mit Kondensator und Widerstand oder per Software zusätzlich entprellen.