Hello everybody,
This is my first post here, so I hope everything is done correctly
Little backstory, I'm making a project for school and I have to have a wireless communication.
I bought these small NRF24L01+ transceivers to use it. I will use this to send 7 variables from a UNO to a MEGA.
Its working from uno to uno. But When I change the receiver with a MEGA I get no data...?
I'm using this site for the wiring: http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
(chart in the middel of the page)
This is the code on the Receiving Mega:
/* YourDuinoStarter Example: nRF24L01 Receive Joystick values
- WHAT IT DOES: Receives data from another transceiver with
 2 Analog values from a Joystick or 2 Potentiometers
 Displays received values on Serial Monitor
- SEE the comments after "//" on each line below
- CONNECTIONS: nRF24L01 Modules See:
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
 1 - GND
 2 - VCC 3.3V !!! NOT 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED
Â
- V1.00 11/26/13
 Based on examples at http://www.bajdi.com/
 Questions: terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PINÂ 9
#define CSN_PIN 10
// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
float joystick[7];Â // 2 element array holding Joystick readings
void setup()Â /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);
 delay(1000);
 Serial.println("Nrf24L01 Receiver Starting");
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();;
}//--(end setup )---
void loop()Â /****** LOOP: RUNS CONSTANTLY ******/
{
 delay(500);
 if ( radio.available() )
 {
  // Read the data payload until we've received everything
  bool done = false;
  while (!done)
  {
   // Fetch the data payload
   done = radio.read( joystick, sizeof(joystick) );
  Â
   Serial.println(joystick[0]);
    Â
   Serial.println(joystick[1]);
   Serial.println(joystick[2]);
   Serial.println(joystick[3]);
   Serial.println(joystick[4]);
   Serial.println(joystick[5]);
   Serial.println(joystick[6]);
  Â
  }
 }
 else
 { Â
   Serial.println("No radio available");
 }
}//--(end main loop )---
/*-----( Declare User-written Functions )-----*/
//NONE
//*********( THE END )***********
And this is the code of the sending UNO:
/* YourDuinoStarter Example: nRF24L01 Transmit Joystick values
- WHAT IT DOES: Reads Analog values on A0, A1 and transmits
 them over a nRF24L01 Radio Link to another transceiver.
- SEE the comments after "//" on each line below
- CONNECTIONS: nRF24L01 Modules See:
http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
 1 - GND
 2 - VCC 3.3V !!! NOT 5V
 3 - CE to Arduino pin 9
 4 - CSN to Arduino pin 10
 5 - SCK to Arduino pin 13
 6 - MOSI to Arduino pin 11
 7 - MISO to Arduino pin 12
 8 - UNUSED
 -
 Analog Joystick or two 10K potentiometers:
 GND to Arduino GND
 VCC to Arduino +5V
 X Pot to Arduino A0
 Y Pot to Arduino A1
Â
- V1.00 11/26/13
 Based on examples at http://www.bajdi.com/
 Questions: terry@yourduino.com */
/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <OneWire.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PINÂ 9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1
int DS18S20_Pin = 2; // Pin Temperatuur Sensor
OneWire ds(DS18S20_Pin); // Write Pin Temperatuur Sensor
float temperature;
int floattemp;
// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
float joystick[7];Â // 2 element array holding Joystick readings
void setup()Â /****** SETUP: RUNS ONCE ******/
{
 Serial.begin(9600);
 radio.begin();
 radio.openWritingPipe(pipe);
}//--(end setup )---
void loop()Â /****** LOOP: RUNS CONSTANTLY ******/
{
 temperature = getTemp();
 floattemp = (int)temperature;
 joystick[0] = temperature;
 joystick[1] = 1;
 joystick[2] = 2;
 joystick[3] = 3;
 joystick[4] = 4;
 joystick[5] = 5;
 joystick[6] = 6;
 radio.write( joystick, sizeof(joystick) );
}//--(end main loop )---
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;
Â
}
There is an digital temperature meter connected to D2 on the sending UNO (OneWire).
When I use a UNO for receiving I get the correct data on the serial monitor:
(23.56, 1.00, 2.00, 3.00, 4.00, 5.00, 6.00) <- this is what I'm expecting to receive! (Yay!)
But when I use a MEGA (Wired like that site says) I get this in my serial monitor...
(nan, nan, nan, nan, nan, nan, nan)
Can someone help me? I hope I didn't forget something to type here.
Thanks in advance!!!