Probleme mit Receiver MIRF + nRF24L01

Hallo Leute,

ich sitz hier seit einem Tag an zwei nRF24L01 Modulen und habe ein Problem dass ich einfach nicht lösen kann (oder es ist einfach schon zu spät und ich seh den Fehler nicht ?!?). Ich habe einen Sender (Arduino Mega + nRF24L01) und einen Empfänger (Arduino Uno + nRF24L01.

Der UNO (Empfänger) gibt permanent ein TRUE als Wert für die Funktion Mirf.getData() aus. Was mach ich da falsch, ich will es doch nur auslesen und dann ist gut :slight_smile:

Ich poste mal den Code, ich hoffe es kann mir jemand helfen :’(

Empfänger:

/* Arduino UNO*/

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
 
int recByte=1; 
 
void setup(){
  //Meine LED
  pinMode(2, OUTPUT);
  Serial.begin(9600);
  Serial.println("Lets go, schalt mir eine LED!"); 
}

void loop(){
     
     if(Mirf.dataReady()){
          Mirf.getData((byte *) &recByte);
          Serial.println((char *)recByte);
          delay(100);
    }
    
    switch(recByte){
         case 0x01: digitalWrite(2, HIGH); break;
         case 0x02: digitalWrite(2, LOW);  break;
   }
}

void MirfInitialisierung(){
      Mirf.cePin = 8;
      Mirf.csnPin = 10;
      Mirf.spi = &MirfHardwareSpi;
      Mirf.init();
      //Eigene Adresse
      Mirf.setTADDR((byte *)"UNO");
      //Partner-Adresse
      Mirf.setRADDR((byte *)"MEGA");
      Mirf.channel = 10; 
      Mirf.configRegister(RF_SETUP,0x06);
      Mirf.payload = sizeof(recByte);
      Mirf.config();
}

Sender:

/* Arduino Mega2560*/

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

int sendeByte;

void setup(){
  Serial.begin(9600);
  MirfInitialisierung();
  Serial.println("Paule, Konfiguration abgeschlossen!"); 
}

void loop(){
  sendeByte=1;
  Mirf.send((byte *) &sendeByte);
  while(Mirf.isSending()){}
  Serial.println(sendeByte);
//  if (Mirf.dataReady()){
//    Mirf.getData((byte *)empfangenesByte);
//    Serial.println(empfangenesByte);
//  };
  delay(3000);
  
  sendeByte=2;
  Mirf.send((byte *) &sendeByte);
  while(Mirf.isSending()){}
  Serial.println("LED off!");
  delay(3000);
} 

 void MirfInitialisierung(){
      Mirf.cePin = 48;
      Mirf.csnPin = 53;
      Mirf.spi = &MirfHardwareSpi;
      Mirf.init();
      //Eigene Adresse
      Mirf.setTADDR((byte *)"MEGA");
      //Partner-Adresse
      Mirf.setRADDR((byte *)"UNO");
      //Länge der zu übertragenen Seiten
      Mirf.payload = sizeof(sendeByte);
      Mirf.channel = 10; 
      // 1Mhz
      Mirf.configRegister(RF_SETUP,0x06);
      Mirf.config();
}

Ohne Mirf.h zu kennen:

  • Wann wird im Empfänger MirfInitialisierung() aufgerufen ?

  • Was liest du, wenn du im Empfänger

    Serial.println(recByte);

schreibst ?