RCswitch Receive Problem

Ich verwende ein Arduino Mega2560 mit Ethernet shield und möchte damit per Ethernet, Funksteckdosen schalten.
Das Senden funktioniert, aber das Receive nicht.

Was ich getestet habe:
An Pin2 ist habe ich zu Testzwecken direkt den Sender angeschlossen.=> TTL-Pegel mit Oszi überprüft. Okay.
Das Programm Basics\DigitalReadSerial getestet. => Signale gehen auf das richtige Pin und werden im Serial Monitor angezeigt.
Das Programm RCswitch\ReceiveDemo_Simple getestet. => keine Anzeige am Serial Monitor.
Im if (mySwitch.available()) ein else mit Serial.print(“not availaible“) eingefügt. => Der springt nie in das if ???

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    
    int value = mySwitch.getReceivedValue();
    
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }

    mySwitch.resetAvailable();
  }
  else { Serial.print(“not availaible“); }
}

Mit der Library RCswitch kenne ich mich nicht aus. Wann liefert die die Daten ?
Wie kann ich jetzt den Fehler weiter eingrenzen ?
Was für eine IDE verwendet Ihr ?

IDE: Arduino 0023 und Arduino 1.0.4 getestet. RCswitch: RCswitch_2.51.zip

Der Pin 2 ist auf dem Uno und Leonardo ein Interrupt Pin.
Ist das vllt. auf dem Mega anders?

Ja, dass dachte ich auch Anfangs.
Dann, habe ich das "Interrupt Programm" getestet. Siehe Code.
Das funktioniert und die LED blinzelt, wenn ich auf den Sender drücke.
Auch laut der Beschreibung ist der Interrupt0 auf Pin2 richtig. http://arduino.cc/en/Reference/AttachInterrupt

Gibt es vielleicht irgendwelche Tipps&Tricks für das Installieren der IDE ?
Anfängerfrage: Muss man bei den Verzeichnissen und Speicherort was beachten ?
Vielleicht funktioniert mit den #include "RCSwitch.h" was nicht ?
Wie kann ich überprüfen, ob die #include richtig eingebunden ist ?
Kann man da irgendwie in der "RCSwitch.cpp" debuggen ?

int pin = 13;
volatile int state = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}

void loop()
{
  digitalWrite(pin, state);
}

void blink()
{
  state = !state;
}

Solange der Programmordner nicht zerpflückt wird kannst du die IDE überall speichern.
Hauptsach das Sketchbook wird nicht immer verschoben weil du ansonsten deine Einstellungen ändern musst.
Ich würde nicht so an der Software festhalten sondern an der Hardware.
Hier steht : GitHub - sui77/rc-switch: Arduino lib to operate 433/315Mhz devices like power outlet sockets.

With the enableReceive method the Arduino will listen to incoming signals on the external interrupt (first parameter). Note that most boards have only two external interrupts: number 0 (on digital pin 2) and 1 (on digital pin 3) (The Arduino Mega has some more).

und :

You can also use any other external interrupt pin of your Arduino instead of interrupt #0/Pin #2

Hat der Empfänger wirklich 315 oder 433 mhz ?
Probier mal alle Interrupts beim Mega.
Zur Not kannst du den Autor mal kontaktieren
Gib statt der Interruptnummer den Pin an
Klappt`s ?

Mit dem ReceiveDemo_Simple geht gar nichts.
Siehe Testergebnis:
mySwitch.enableReceive(0); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
mySwitch.enableReceive(1); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
mySwitch.enableReceive(2); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
mySwitch.enableReceive(3); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
mySwitch.enableReceive(4); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
mySwitch.enableReceive(5); pin 2=F, 3=F, 21=F, 20=F, 19=F, 18=F
Da geht gar nichts.

Mit dem Interruptcheck funktioniert es so wie es soll.
attachInterrupt(0, blink, CHANGE); pin2=OK
attachInterrupt(1, blink, CHANGE); pin3=OK
attachInterrupt(2, blink, CHANGE); pin21=OK
attachInterrupt(3, blink, CHANGE); pin20=OK
attachInterrupt(4, blink, CHANGE); pin19=OK
attachInterrupt(5, blink, CHANGE); pin18=OK
Somit ist bewiesen, dass die Hardware pins und die dazugehörigen Interrupts funktionieren.

Ich verwende 433MHz.
Nun verwende ich schon eine eigene Testschaltung um jeden Hardwarefehler auszuschließen.
Das sauberste Signal das du dir vorstellen kannst. Vom Sender-IC abgegriffen über einen Puffer direkt zum Pin.
Mit dem Oszi geprüft. Schönes 0/5V Signal.

Was könnte ich noch probieren ?

Hallo,

Ich habe die selbe Probleme wie du. Hast du schon eine losung gefunden?

Hallo,

ich habe genau die selben Probleme. Könntet Ihr bitte posten wie ihr das Problem behoben habt??