Component of transmitter: arduino, nRF24L01, 2 ultrasonic sensors
Component of receiver: arduino, nRF24L01
Aim: to send ultrasonic distance from transmitter to receiver
The problem I'm facing: receiver can only receive one of the sensor data. I have checked all the component is not broken. Below is transmitter and receiver code.
Transmitter side is working fine
Transmitter code :
// transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7,8); // CE, CSN
const byte addresses [6] = {"00001"};
int S1_trigpin = 2; //output
int S1_echopin = 3; //input
int S2_trigpin = 4; //output
int S2_echopin = 5; //input
long S1_duration;
long S2_duration;
int S1_distance;
int S2_distance;
void setup()
{
pinMode(S1_trigpin, OUTPUT);
pinMode(S1_echopin, INPUT);
pinMode(S2_trigpin, OUTPUT);
pinMode(S2_echopin, INPUT);
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(addresses);
radio.stopListening();
}
void loop()
{
//-----------Sensor1---------------------
digitalWrite(S1_trigpin, LOW);
delayMicroseconds(2);
digitalWrite(S1_trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(S1_trigpin, LOW);
S1_duration = pulseIn(S1_echopin, HIGH);
S1_distance = S1_duration * 0.0343 / 2;
radio.write(&S1_distance, sizeof(S1_distance)); //Sending the data
delay(25);
//-----------Sensor2---------------------
digitalWrite(S2_trigpin, LOW);
delayMicroseconds(2);
digitalWrite(S2_trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(S2_trigpin, LOW);
S2_duration = pulseIn(S2_echopin, HIGH);
S2_distance = S2_duration * 0.0343 / 2;
radio.write(&S2_distance, sizeof(S2_distance)); //Sending the data
delay(25);
//-----------printing---------------------
Serial.print("S1_distance: ");
Serial.print(S1_distance);
Serial.print("cm");
Serial.print(" ");
Serial.print("S2_distance: ");
Serial.print(S2_distance);
Serial.println("cm");
}
Receiver code:
// receiver
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7,8); // CE, CSN
const byte addresses [6] = {"00001"};
//---------------Declare variable-----------------
int S1_distance = 0;
int S2_distance = 0;
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1, addresses);
radio.startListening();
}
void loop()
{
//distance=0;
if (radio.available())
{
while(radio.available())
{
radio.read(&S1_distance, sizeof(S2_distance));
Serial.print("S1: ");
Serial.print(S1_distance);
Serial.print("cm");
Serial.print(" ");
radio.read(&S2_distance, sizeof(S2_distance));
Serial.print("S2: ");
Serial.print(S2_distance);
Serial.print("cm");
Serial.print(" ");
}
}
}
this is result of receiver, sensor(S_1) is able to receive, but sensor(S_2) is not able to receive