Hi, I am not a programmer, not even an electronic guy any help will be great here once I am new on Arduino.
I am trying to connect 3 Arduino in an RF24 so 2 Arduino with ultrasonic sensors will check the distance and send the data to a receiver.
As far as I know, I have to put it in an array or a struct but I could not make it work I have checked many topics and tried to adapt it to my code but I am probably missing something.
the following code is my code working without errors but because I could not set it in array/struct I am receiving random measurements in the receiver at the moment.
RECEIVER
// RECEIVER
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#include <LiquidCrystal.h>
const int rs = 10, en = 7, d4 = 6, d5 = 5, d6 = 4, d7 = 3;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
RF24 radio(9, 8); // CE, CSN
const byte addresses[][10] = {"ADDRESS01","ADDRESS02"};
int distance_mm1;
int distance_mm2;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(addresses[1]); // ADDRESS02
radio.openReadingPipe(1, addresses[0]); // ADDRESS01
radio.setPALevel(RF24_PA_MAX);
Serial.println("Loading"); // print some text in Serial Monitor
Serial.println("Ultra sonic");
lcd.begin(16, 2); // lcd starts with resolution 16x2
};
void loop() {
delay(10);
radio.startListening();
if (radio.available()) { // Receive
radio.read(&distance_mm1, sizeof(distance_mm1));
lcd.setCursor(0, 0);
lcd.print("SENSOR1: ");
lcd.print(distance_mm1);
lcd.println("mm ");
radio.read(&distance_mm2, sizeof(distance_mm2));
lcd.setCursor(0, 1);
lcd.print("SENSOR2: ");
lcd.print(distance_mm2);
lcd.println("mm ");
};
delay(1000);
radio.stopListening(); // Transmit
const char txt_sent[] = "Sender 2";
radio.write(&txt_sent, sizeof(txt_sent));
Serial.print("Sent to: ");Serial.println(txt_sent);
Serial.println(distance_mm1);
Serial.println("");
Serial.println(distance_mm2);
};
TRANSMITER1
// TRANSMITTER
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#define echoPin 5 // attach pin D4 Arduino to pin Echo of HC-SR04
#define trigPin 4 //attach pin D5 Arduino to pin Trig of HC-SR04
long duration; // variable for the duration of sound wave travel
int distance_mm1; // variable for mm measurement
RF24 radio(9, 8); // CE, CSN
const byte addresses[][10] = {"ADDRESS01","ADDRESS02"};
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(addresses[0]); // ADDRESS01
radio.openReadingPipe(1, addresses[1]); // ADDRESS02
radio.setPALevel(RF24_PA_MAX);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
};
void loop() {
// Clears the trigPin condition
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance_mm1 = (duration * 0.034 / 2)*10; // Speed of sound wave divided by 2 (go and back)
delay(10);
radio.stopListening(); // Transmit
radio.write(&distance_mm1, sizeof(distance_mm1));
//const char txt_sent[] = "Sender 1";
//radio.write(&txt_sent, sizeof(txt_sent));
//Serial.print("Sent to: ");Serial.println(txt_sent);
delay(10);
radio.startListening();
if (radio.available()) { // Receive
char txt_received[10] = "";
radio.read(&txt_received, sizeof(txt_received));
Serial.print("Received from: ");Serial.println(txt_received);
};
};
// TRANSMITTER 2
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#define echoPin 5 // attach pin D4 Arduino to pin Echo of HC-SR04
#define trigPin 4 //attach pin D5 Arduino to pin Trig of HC-SR04
long duration; // variable for the duration of sound wave travel
int distance_mm2; // variable for mm measurement
RF24 radio(9, 8); // CE, CSN
const byte addresses[][10] = {"ADDRESS01","ADDRESS02"};
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(addresses[0]); // ADDRESS01
radio.openReadingPipe(1, addresses[1]); // ADDRESS02
radio.setPALevel(RF24_PA_MAX);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
};
void loop() {
// Clears the trigPin condition
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance_mm2 = (duration * 0.034 / 2)*10; // Speed of sound wave divided by 2 (go and back)
delay(10);
radio.stopListening(); // Transmit
radio.write(&distance_mm2, sizeof(distance_mm2));
//const char txt_sent[] = "Sender 1";
//radio.write(&txt_sent, sizeof(txt_sent));
//Serial.print("Sent to: ");Serial.println(txt_sent);
delay(10);
radio.startListening();
if (radio.available()) { // Receive
char txt_received[10] = "";
radio.read(&txt_received, sizeof(txt_received));
Serial.print("Received from: ");Serial.println(txt_received);
};
};