I tested again the following:
Send data with the Transmitter using address "30000" works when I select pipe 1 and pipe 2 as destination, but when I assign it to pipe 3, there is no data received, but I see that the transmitter is sending it. However, when I use only pipe 3 in the receiver, the data is also received.
It seems like the only time that is not working is when I create more than two conditions to send the data (on the receiver code below), when is just between pipe 1 and pipe 2 it works, but not when adding pipe 3.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//NRF wireless communication setup
RF24 radio(9, 8); //CE, CSN pins
const byte imu1[6] = "10000";
const byte imu2[6] = "20000";
const byte imu4[6] = "30000";
float timeVal =0;
int lup =0;
typedef struct
{
float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
}dataPack1;
dataPack1 package1;
typedef struct
{
float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
}dataPack2;
dataPack2 package2;
typedef struct
{
float yawTemp = 0, pitchTemp = 0, rollTemp= 0;
float az = 0, ay = 0, ax = 0, rate= 0, ID =0;
}dataPack4;
dataPack4 package4;
void setup()
{
Serial.begin(57600);
//Initializing the NRF to transmitting mode
radio.begin();
radio.setDataRate(RF24_2MBPS); //while communicating with multiple nrf set datarate for both Tx and Rx "radio.setDataRate(RF24_2MBPS)"
radio.openReadingPipe(1, imu1); //Radio.openReadingPipe(pipe number, address)
radio.openReadingPipe(2, imu2); //Radio.openReadingPipe(pipe number, address)
radio.openReadingPipe(3, imu4); //Radio.openReadingPipe(pipe number, address)
radio.setPALevel(RF24_PA_MIN); //speed RF24_250KBPS for 250kbs, RF24_1MBPS for 1Mbps, or RF24_2MBPS for 2Mbps
radio.startListening();
Serial.print("Time(s), yaw(º), pitch(º), roll(º), az(g), ay(g), ax(g), TIMEZZ, Hz");
}
void loop()
{
uint8_t pipe1 = 1, pipe2 = 2, pipe3 = 3; //this is a datatype similar to "byte" datatype
timeVal = millis()*0.001;
//if (lup == 0)
//{
//NRF data recieve
if (radio.available(&pipe1))
//this will point if the data is available from pipe 1
{
if (pipe1 == 1)
{
lup =1;
radio.read(&package1, sizeof(package1));
Serial.print(timeVal, 2);
Serial.print(","); Serial.print(package1.yawTemp,1);
Serial.print(","); Serial.print(package1.pitchTemp,1);
Serial.print(","); Serial.print(package1.rollTemp,1);
//Serial.print(","); Serial.print(package1.az,2);
//Serial.print(","); Serial.print(package1.ay,2);
//Serial.print(","); Serial.print(package1.ax,2);
//Serial.print(","); Serial.print(package1.timer,2);
Serial.print(","); Serial.print(package1.rate,2);
Serial.print(","); Serial.print(package1.ID,2);
Serial.print("\t");
Serial.print(","); Serial.print(package2.yawTemp,1);
Serial.print(","); Serial.print(package2.pitchTemp,1);
Serial.print(","); Serial.print(package2.rollTemp,1);
//Serial.print(","); Serial.print(package2.az,2);
//Serial.print(","); Serial.print(package2.ay,2);
//Serial.print(","); Serial.print(package2.ax,2);
//Serial.print(","); Serial.print(package2.timer,2);
Serial.print(","); Serial.print(package2.rate,2);
Serial.print(","); Serial.print(package2.ID,2);
Serial.print(","); Serial.print(package4.yawTemp,1);
Serial.print(","); Serial.print(package4.pitchTemp,1);
Serial.print(","); Serial.print(package4.rollTemp,1);
//Serial.print(","); Serial.print(package4.az,2);
//Serial.print(","); Serial.print(package4.ay,2);
//Serial.print(","); Serial.print(package4.ax,2);
//Serial.print(","); Serial.print(package4.timer,2);
Serial.print(","); Serial.print(package4.rate,2);
Serial.print(","); Serial.print(package4.ID,2);
Serial.print(" "); Serial.println(lup);
}
}
//lup = lup + 1;
//}
//else if (lup == 0)
if (radio.available(&pipe2))
{
if (pipe2 == 2)
{
lup =2;
radio.read(&package2, sizeof(package2));
Serial.print(timeVal, 2);
Serial.print(","); Serial.print(package1.yawTemp,1);
Serial.print(","); Serial.print(package1.pitchTemp,1);
Serial.print(","); Serial.print(package1.rollTemp,1);
//Serial.print(","); Serial.print(package1.az,2);
//Serial.print(","); Serial.print(package1.ay,2);
//Serial.print(","); Serial.print(package1.ax,2);
//Serial.print(","); Serial.print(package1.timer,2);
Serial.print(","); Serial.print(package1.rate,2);
Serial.print(","); Serial.print(package1.ID,2);
Serial.print("\t");
Serial.print(","); Serial.print(package2.yawTemp,1);
Serial.print(","); Serial.print(package2.pitchTemp,1);
Serial.print(","); Serial.print(package2.rollTemp,1);
//Serial.print(","); Serial.print(package2.az,2);
//Serial.print(","); Serial.print(package2.ay,2);
//Serial.print(","); Serial.print(package2.ax,2);
//Serial.print(","); Serial.print(package2.timer,2);
Serial.print(","); Serial.print(package2.rate,2);
Serial.print(","); Serial.print(package2.ID,2);
Serial.print(","); Serial.print(package4.yawTemp,1);
Serial.print(","); Serial.print(package4.pitchTemp,1);
Serial.print(","); Serial.print(package4.rollTemp,1);
//Serial.print(","); Serial.print(package4.az,2);
//Serial.print(","); Serial.print(package4.ay,2);
//Serial.print(","); Serial.print(package4.ax,2);
//Serial.print(","); Serial.print(package4.timer,2);
Serial.print(","); Serial.print(package4.rate,2);
Serial.print(","); Serial.print(package4.ID,2);
Serial.print(" "); Serial.println(lup);
}
}
else if (radio.available(&pipe3))
{
if (pipe3 == 3)
{
lup =3;
radio.read(&package4, sizeof(package4));
Serial.print(timeVal, 2);
Serial.print(","); Serial.print(package1.yawTemp,1);
Serial.print(","); Serial.print(package1.pitchTemp,1);
Serial.print(","); Serial.print(package1.rollTemp,1);
//Serial.print(","); Serial.print(package1.az,2);
//Serial.print(","); Serial.print(package1.ay,2);
//Serial.print(","); Serial.print(package1.ax,2);
//Serial.print(","); Serial.print(package1.timer,2);
Serial.print(","); Serial.print(package1.rate,2);
Serial.print(","); Serial.print(package1.ID,2);
Serial.print("/t"); Serial.print("/t");
Serial.print(","); Serial.print(package2.yawTemp,1);
Serial.print(","); Serial.print(package2.pitchTemp,1);
Serial.print(","); Serial.print(package2.rollTemp,1);
//Serial.print(","); Serial.print(package2.az,2);
//Serial.print(","); Serial.print(package2.ay,2);
//Serial.print(","); Serial.print(package2.ax,2);
//Serial.print(","); Serial.print(package2.timer,2);
Serial.print(","); Serial.print(package2.rate,2);
Serial.print(","); Serial.print(package2.ID,2);
Serial.print("\t");
Serial.print(","); Serial.print(package4.yawTemp,1);
Serial.print(","); Serial.print(package4.pitchTemp,1);
Serial.print(","); Serial.print(package4.rollTemp,1);
//Serial.print(","); Serial.print(package4.az,2);
//Serial.print(","); Serial.print(package4.ay,2);
//Serial.print(","); Serial.print(package4.ax,2);
//Serial.print(","); Serial.print(package4.timer,2);
Serial.print(","); Serial.print(package4.rate,2);
Serial.print(","); Serial.print(package4.ID,2);
Serial.print(" "); Serial.println(lup);
}
}
}
I will try to modify the code to ask from the receiver to send data sequentially from the transmitters (master-slave with IDs) and see if that works.