Ich hab eine sehr ähnliche Anwendung und bei mir läuft es problemlos... Hier mein Sketch:
#include <SPI.h>
#include "RF24.h"
#include "Time.h"
#include <OneWire.h>
#include <DallasTemperature.h>
byte RaumID = 23;
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
RF24 radio(9, 10);
float Temperatur;
long letzteMeldung = 0;
long meldungsAbstand = 6000;
byte Sensoralt[9];
byte Sensor[9];
void setup()
{
Sensor[0] = RaumID; // muss man nur einmal setzen
sensors.begin();
Serial.begin(115200);
radio.begin();
radio.openWritingPipe((byte*)"2Node");
radio.setRetries(15,15);
radio.setPALevel(RF24_PA_LOW);
radio.setDataRate(RF24_1MBPS);
radio.startListening();
}
void loop()
{
unsigned long aktuelleMeldung = millis();
sensors.requestTemperatures();
Temperatur = (sensors.getTempCByIndex(0));
if (Temperatur >= 0)
{Sensor[3] = byte(Temperatur);}
else
{Sensor[4] = (byte(Temperatur))*-1;}
Sensor[1] = 0;
Sensor[2] = 0;
Sensor[5] = 0;
Sensor[6] = 0;
Sensor[7] = 0;
Sensor[8] = 0;
//if (Sensor[1] != Sensoralt[1])
if (aktuelleMeldung - letzteMeldung > meldungsAbstand)
{
letzteMeldung = aktuelleMeldung;
printSensorArray();
radio.stopListening();
radio.write(Sensor, sizeof(Sensor));
radio.startListening();
}
Sensoralt[3] = Sensor[3];
}
void printSensorArray()
{
Serial.println(F("sende "));
Serial.print(F(" Raum ID: " ));
Serial.println(Sensor[0]);
Serial.print(F(" Temperatur : "));
Serial.println(Temperatur);
Serial.print(Sensor[3]);
Serial.print(F(","));
Serial.println(Sensor[4]);
Serial.println(F(" "));
}