Robin2:
Do you mean that you tried one of my examples and it did not work?
If so, please post the programs that YOU uploaded to your Arduinos and also post some examples of the output from the programs.
...R
This one is master code
// MasterSwapRoles
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
const byte slaveAddress[5] = {'R','x','A','A','A'};
const byte masterAddress[5] = {'T','X','a','a','a'};
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
char dataToSend[6] = "Message ";
char txNum = '0';
float t1,t2,t3,t4,t5,t6; // the two values to be sent to the master
struct payload{
float t1;
float t2;
float t3;
float t4;
float t5;
float t6;
};
bool newData = false;
unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 1000; // send once per second
//============
void setup() {
Serial.begin(9600);
Serial.println("MasterSwapRoles Starting");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.openWritingPipe(slaveAddress);
radio.openReadingPipe(1, masterAddress);
radio.setRetries(3,5); // delay, count
send(); // to get things started
prevMillis = millis(); // set clock
}
//=============
void loop() {
currentMillis = millis();
if (currentMillis - prevMillis >= txIntervalMillis) {
send();
prevMillis = millis();
}
getData();
showData();
}
//====================
void send() {
payload data = {t1,t2,t3,t4,t5,t6};
radio.stopListening();
bool rslt;
rslt = radio.write( &data, sizeof(data) );
radio.startListening();
Serial.print("Temperature1: ");
Serial.print(t1);
Serial.print("Temperature2: ");
Serial.print(t2);
Serial.print("Temperature3: ");
Serial.print(t3);
Serial.print("Temperature4: ");
Serial.print(t4);
if (rslt) {
Serial.println(" Acknowledge received");
updateMessage();
}
else {
Serial.println(" Tx failed");
}
}
//================
void getData() {
payload data = {t1,t2,t3,t4,t5,t6};
t1 = data.t1;
t2 = data.t2;
t3 = data.t3;
t4 = data.t4;
if ( radio.available() ) {
radio.read( &data, sizeof(data) );
newData = true;
}
}
//================
void showData() {
payload data = {t1,t2,t3,t4,t5,t6};
if (newData == true) {
Serial.print("Data received ");
t1 = data.t1;
t2 = data.t2;
t3 = data.t3;
t4 = data.t4;
Serial.print("Temperature1: ");
Serial.print(t1);
Serial.print("Temperature2: ");
Serial.print(t2);
Serial.print("Temperature3: ");
Serial.print(t3);
Serial.print("Temperature4: ");
Serial.print(t4);
newData = false;
delay(1000);
}
}
//================
void updateMessage() {
// so you can see that new data is being sent
txNum += 1;
if (txNum > '5') {
txNum = '0';
}
dataToSend[6] = txNum;
}
This one is slave code
// SlaveSwapRoles
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT.h>
#define DHT1TYPE DHT11
#define DHT1PIN A0
#define DHT2TYPE DHT11
#define DHT2PIN A1
#define DHT3TYPE DHT11
#define DHT3PIN A2
#define DHT4TYPE DHT11
#define DHT4PIN A3
#define DHT5TYPE DHT11
#define DHT5PIN A4
#define DHT6TYPE DHT11
#define DHT6PIN A5
#define CE_PIN 9
#define CSN_PIN 10
const byte slaveAddress[5] = {'R','x','A','A','A'};
const byte masterAddress[5] = {'T','X','a','a','a'};
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
char dataReceived[6]; // must match dataToSend in master
float t1,t2,t3,t4,t5,t6; // the two values to be sent to the master
struct payload{
float t1;
float t2;
float t3;
float t4;
float t5;
float t6;
};
bool newData = false;
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
DHT dht3(DHT3PIN, DHT3TYPE);
DHT dht4(DHT4PIN, DHT4TYPE);
DHT dht5(DHT5PIN, DHT5TYPE);
DHT dht6(DHT6PIN, DHT6TYPE);
unsigned long currentMillis;
unsigned long prevMillis;
unsigned long txIntervalMillis = 1000; // send once per second
void setup() {
Serial.begin(9600);
Serial.println("SlaveSwapRoles Starting");
dht1.begin();
dht2.begin();
dht3.begin();
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.openWritingPipe(masterAddress); // NB these are swapped compared to the master
radio.openReadingPipe(1, slaveAddress);
radio.setRetries(3,5); // delay, count
radio.startListening();
}
//====================
void loop() {
float t1 = dht1.readTemperature();
float t2 = dht2.readTemperature();
float t3 = dht3.readTemperature();
float t4 = dht4.readTemperature();
float t5 = dht5.readTemperature();
float t6 = dht6.readTemperature();
getData();
showData();
send();
}
//====================
void send() {
payload data = {t1,t2,t3,t4,t5,t6};
if (newData == true) {
radio.stopListening();
bool rslt;
rslt = radio.write( &data, sizeof(data) );
radio.startListening();
Serial.print("Temperature1: ");
Serial.print(t1);
Serial.print("Temperature2: ");
Serial.print(t2);
Serial.print("Temperature3: ");
Serial.print(t3);
Serial.print("Temperature4: ");
Serial.print(t4);
if (rslt) {
Serial.println("Acknowledge Received");
}
else {
Serial.println("Tx failed");
}
Serial.println();
newData = false;
}
}
//================
void getData() {
payload data = {t1,t2,t3,t4,t5,t6};
if ( radio.available() ) {
radio.read( &data, sizeof(data) );
newData = true;
}
}
//================
void showData() {
if (newData == true) {
Serial.print("Data received ");
payload data = {t1,t2,t3,t4,t5,t6};
t1 = data.t1;
t2 = data.t2;
t3 = data.t3;
t4 = data.t4;
Serial.println(t1);
Serial.println(t2);
Serial.println(t3);
Serial.println(t4);
}
}
The display of serial monitor just data t1 till t6 without real value or just 00,
When I'm using 1 sensor is worked with the same code but without using struct payload
Any advice sir,thanks before..