Here is example code that sends 2 LDRs (LIght Dependent Resistor) data in a struct and receives the struct to display the LDR values. The code uses some methods from the Robin2's simple rf24 tutorial.
sender:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte CE_PIN = 9;
const byte CSN_PIN = 10;
const byte slaveAddress[5] = {'R', 'x', 'A', 'A', 'A'};
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
struct LdrValues
{
int ldr_1;
int ldr_2;
}ldrValues;
unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 1000; // send once per second
const byte LDR1 = A0;
const byte LDR2 = A1;
void setup()
{
Serial.begin(115200);
Serial.println("SimpleTx Starting");
pinMode(LDR1, INPUT_PULLUP);
pinMode(LDR2, INPUT_PULLUP);
radio.begin();
radio.setChannel(76); //76 library default
//RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate( RF24_250KBPS );
radio.setRetries(3, 5); // delay, count
radio.openWritingPipe(slaveAddress);
}
void loop()
{
currentMillis = millis();
if (currentMillis - prevMillis >= txIntervalMillis)
{
send();
Serial.print("LDR 1 = ");
Serial.print(ldrValues.ldr_1);
Serial.print(" LDR 2 = ");
Serial.println(ldrValues.ldr_2);
prevMillis = millis();
}
}
//====================
void send()
{
ldrValues.ldr_1 = analogRead(LDR1);
ldrValues.ldr_2 = analogRead(LDR2);
radio.write( &ldrValues, sizeof(ldrValues) );
}
receiver
// SimpleRx - the slave or the receiver
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte CE_PIN = 9;
const byte CSN_PIN = 10;
const byte thisSlaveAddress[5] = {'R', 'x', 'A', 'A', 'A'};
RF24 radio(CE_PIN, CSN_PIN);
struct LdrValues
{
int ldr_1;
int ldr_2;
} ldrValues;
bool newData = false;
//===========
void setup()
{
Serial.begin(115200);
Serial.println("SimpleRx Starting");
radio.begin();
radio.setChannel(76); //76 library default
//RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate( RF24_250KBPS );
radio.openReadingPipe(1, thisSlaveAddress);
radio.startListening();
}
//=============
void loop()
{
getData();
showData();
}
//==============
void getData()
{
if ( radio.available() )
{
radio.read( &ldrValues, sizeof(ldrValues) );
newData = true;
}
}
void showData()
{
if (newData == true)
{
Serial.print("Data received >> ");
Serial.print("LDR 1 = ");
Serial.print(ldrValues.ldr_1);
Serial.print(" LDR 2 = ");
Serial.println(ldrValues.ldr_2);
newData = false;
}
}