Hi,
Finally I had time to get into the code again and by doing some changes I was able to receive from two different transmitters, without using any delays, the code works and alternates messages read by the receiver from the transmitters, first IMU1 then IMU2 (With its corresponding loss of data).
It seems like using pipe 1 and pipe 2 with the corresponding addresses "10000" and "20000" works well. However for pipe 3 I cannot find an address that works. I read the documentation and using the specified addresses, but still I am not able to receive data on pipe 3.
Is there any table to see which address can be used for a determined pipe?
I also checked the RX_ADDR_PX registers to use that address but it didn't work. I verified each address using a simplified code of the RX below where I just sent form one TX to see if different addresses worked.
RX CODE updated
#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);
}
}
}