Problema libreria RF24

Salve sto provando a realizzare un sensore di temperatura wireless sfruttando questi famosi moduli radio e la libreria RF24 che fino a quando si tratta di inviare stringhe tramite seriale funziona adesso però che sto cercando di inviare come dato la temperatura no.
C'è qualche anima pia che potrebbe darmi una mano ?
Ecco il codice che per il momento sono arrivato a scrivere (p.s: sto utilizzando 2 arduino UNO)

Transmitter:

#include <OneWire.h> 
#include <SPI.h>
#include <RF24.h>

RF24 radio(8, 7);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin);  // on digital pin 2
int relay = 3;

void setup(void) {
  
  radio.begin();
  radio.openWritingPipe(pipes[0]);
  radio.openReadingPipe(1,pipes[1]);
  radio.enableDynamicPayloads() ;
  radio.setAutoAck( true ) ;
  radio.setDataRate( RF24_250KBPS );
  radio.powerUp() ;
  
  Serial.begin(9600);
  pinMode(relay,OUTPUT);
}

void loop(void) {
  float temperature = getTemp();

   radio.write(&temperature, sizeof(temperature));

   
  delay(1000); //just here to slow down the output so it is easier to read 
}
float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }

  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }

  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }

  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end

  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad

  
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
  
  return TemperatureSum;
  
}

Ecco qui invece il receiver:

#include <SPI.h>
#include <RF24.h>


RF24 radio(8,7);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };


void setup() {

  radio.begin();
  radio.openWritingPipe(pipes[1]);
  radio.openReadingPipe(1,pipes[0]);
  radio.enableDynamicPayloads() ;
  radio.setAutoAck( true ) ;
  radio.setDataRate( RF24_250KBPS );
  radio.powerUp() ;
  radio.startListening();
  //radio.printDetails();

  Serial.begin(9600);
}

void loop() {
  if (radio.available()) {
    char c;
    radio.read(&c, sizeof(c));
     Serial.write(c);
  }
}

Non riesco a visualizzare sul receiver la temperatura, non arriva niente.
Grazie mille.
Valerio.

Credo che il problema sia il spedire la variabile Float, devo prima riconvertirla in char...

Ti ho allegato un esempio che fa le tue stesse cose.
A me funziona.

E' tratto dagli esempi di Maniacbug, ma adattato per trasmettere la temperatura

il tuo non funziona perchè:

    char c;
    radio.read(&c, sizeof(c));

leggi un char e non un float.

Modificalo così:

float c;
radio.read( &c, sizeof(c) );
Serial.print("Temperatura rilevata: ");
      Serial.println(c);

Ciao
Gio

NRF24_Temperatura.zip (4.16 KB)