Ja, habe ich.
Ich hab mir ein kleines Testprogramm geschrieben und auf zwei Arduinos geladen. Diese haben sich dann immer gegenseitig ein Byte zugesendet. Wichtig bei dem Beispielprogramm ist, dass für den einen Arduino die Konstante FIRST (siehe Anfang des Codes) gesetzt ist, bei dem anderen Arduino muss sie auskommentiert werden. Der Arduino mit der FIRST Konstante startet im Sendemodus, der Andere im Empfangsmodus. Da im Beispiel erst nach einem Datenempfang in den Sendemodus umgeschaltet wird, muss zwingend der sendende Arduino als letzter gestartet werden.
Ist jetzt nur ein schnell zusammengeschustertes Beispiel. Aber man sieht, dass es geht, und kann darauf aufbauen.
#include <JeeLib.h>
#define FIRST
byte outData;
bool sendMode;
void setup()
{
Serial.begin(38400);
Serial.println("Start");
outData = 0;
#ifdef FIRST
rf12_initialize('T', RF12_433MHZ);
sendMode = true;
#else
rf12_initialize('R', RF12_433MHZ);
sendMode = false;
#endif
}
void loop()
{
if (sendMode)
{
delay(100);
rf12_recvDone();
++outData;
if (rf12_canSend())
{
Serial.print("Sende ");
Serial.println(outData);
#ifdef FIRST
rf12_sendStart('R', &outData, sizeof outData);
#else
rf12_sendStart('T', &outData, sizeof outData);
#endif
rf12_sendWait(0);
}
else
Serial.println("Kann nicht senden!");
sendMode = false;
}
else
{
if (rf12_recvDone() && rf12_crc == 0 && rf12_len == 1)
{
Serial.print("Empfangen: ");
Serial.println(rf12_data[0]);
sendMode = true;
}
}
}