Nrf24l01 not connecting

I looked at the examples and tried to write code. but it didn't work. I'm new to arduino. pls help me

Transmitter

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define led 9
RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
char text[32] = "";
int data[4];
void setup() {
pinMode(9, OUTPUT);
radio.begin();
radio.openWritingPipe(addresses[1]); // 00002
radio.openReadingPipe(1, addresses[0]); // 00001
radio.setPALevel(RF24_PA_MIN);
}

void loop() {
delay(5);
radio.stopListening();
data[0] = analogRead(A0);
data[1] = analogRead(A1);
data[2] = analogRead(A2);
data[3] = analogRead(A3);
radio.write(&data, sizeof(data));
delay(5);
radio.startListening();
while (!radio.available());
{
char text[32] = "";
radio.read(&text, sizeof(text));
if(text == "CONNECTED"){
digitalWrite(9, HIGH);}
else digitalWrite(9,LOW);
}

}

Reciever

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
int data[4];
int r1, r2, r3, r4, r5, r6, r7, r8;
int X, X1, Y, Y1;
int relay1 = 2;
int relay2 = 3;
int relay3 = 4;
int relay4 = 5;
int relay5 = 6;
int relay6 = 9;
int relay7 = 10;
int relay8 = A0;
void setup() {
radio.begin();
radio.openWritingPipe(addresses[0]); // 00001
radio.openReadingPipe(1, addresses[1]); // 00002
radio.setPALevel(RF24_PA_MIN);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(relay5, OUTPUT);
pinMode(relay6, OUTPUT);
pinMode(relay7, OUTPUT);
pinMode(relay8, OUTPUT);
analogWrite(relay1, 0);
analogWrite(relay2, 0);
analogWrite(relay3, 0);
analogWrite(relay4, 0);
analogWrite(relay5, 0);
analogWrite(relay6, 0);
analogWrite(relay7, 0);
analogWrite(relay8, 0);
}

void loop() {
delay(5);
radio.startListening();
if ( radio.available()) {
while (radio.available()) {
radio.read(&data, sizeof(data));
X = data[0];
Y = data[1];
X1 = data[2];
Y1 = data[3];
int r1 = map(X,600,1024,0,255);
int r2 = map(X,400,0,0,255);
int r3 = map(Y,600,1024,0,255);
int r4 = map(Y,400,0,0,255);
int r5 = map(X1,600,1024,0,255);
int r6 = map(X1,400,0,0,255);
int r7 = map(Y1,600,1024,0,255);
int r8 = map(Y1,400,0,0,255);
}
if(X > 600 && Y < 600 && Y > 400){
analogWrite(relay1, r1);
analogWrite(relay2, 0);
analogWrite(relay3, 0);
analogWrite(relay4, 0);
}else if(X < 400 && Y < 600 && Y > 400){
analogWrite(relay1, 0);
analogWrite(relay2, r2);
analogWrite(relay3, 0);
analogWrite(relay4, 0);
}else if(X < 600 && X > 400 && Y < 600 && Y > 400){
analogWrite(relay1, 0);
analogWrite(relay2, 0);
analogWrite(relay3, 0);
analogWrite(relay4, 0);
}else if(X < 600 && X > 400 && Y > 600){
analogWrite(relay1, 0);
analogWrite(relay2, 0);
analogWrite(relay3, r3);
analogWrite(relay4, 0);
}else if(X < 600 && X > 400 && Y < 400){
analogWrite(relay1, 0);
analogWrite(relay2, 0);
analogWrite(relay3, 0);
analogWrite(relay4, r4);
}else if(X > 600 && Y > 600){
analogWrite(relay1, r1);
analogWrite(relay2, 0);
analogWrite(relay3, r3);
analogWrite(relay4, 0);
}else if(X > 600 && Y < 400){
analogWrite(relay1, r1);
analogWrite(relay2, 0);
analogWrite(relay3, 0);
analogWrite(relay4, r4);
}else if(X < 400 && Y > 600){
analogWrite(relay1, 0);
analogWrite(relay2, r2);
analogWrite(relay3, r3);
analogWrite(relay4, 0);
}else if(X < 400 && Y < 400){
analogWrite(relay1, 0);
analogWrite(relay2, r2);
analogWrite(relay3, 0);
analogWrite(relay4, r4);
}
if(X1 > 600 && Y1 < 600 && Y1 > 400){
analogWrite(relay5, r5);
analogWrite(relay6, 0);
analogWrite(relay7, 0);
analogWrite(relay8, 0);
}else if(X1 < 400 && Y1 < 600 && Y1 > 400){
analogWrite(relay5, 0);
analogWrite(relay6, r6);
analogWrite(relay7, 0);
analogWrite(relay8, 0);
}else if(X1 < 600 && X1 > 400 && Y1 < 600 && Y1 > 400){
analogWrite(relay5, 0);
analogWrite(relay6, 0);
analogWrite(relay7, 0);
analogWrite(relay8, 0);
}else if(X1 < 600 && X1 > 400 && Y1 > 600){
analogWrite(relay5, 0);
analogWrite(relay6, 0);
analogWrite(relay7, r7);
analogWrite(relay8, 0);
}else if(X1 < 600 && X1 > 400 && Y1 < 400){
analogWrite(relay5, 0);
analogWrite(relay6, 0);
analogWrite(relay7, 0);
analogWrite(relay8, r8);
}else if(X1 > 600 && Y1 > 600){
analogWrite(relay5, r5);
analogWrite(relay6, 0);
analogWrite(relay7, r7);
analogWrite(relay8, 0);
}else if(X1 > 600 && Y1 < 400){
analogWrite(relay5, r5);
analogWrite(relay6, 0);
analogWrite(relay7, 0);
analogWrite(relay8, r8);
}else if(X1 < 400 && Y1 > 600){
analogWrite(relay5, 0);
analogWrite(relay6, r6);
analogWrite(relay7, r7);
analogWrite(relay8, 0);
}else if(X1 < 400 && Y1 < 400){
analogWrite(relay5, 0);
analogWrite(relay6, r6);
analogWrite(relay7, 0);
analogWrite(relay8, r8);
}
delay(5);
radio.stopListening();
{
const char text[] = "CONNECTED";
radio.write(&text, sizeof(text));
delay(1000);
}
}
}

Welcome to the forum

Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'

Use code tags (the </> icon above the compose window) to make it easier to read and copy for examination

Some things to look for:

If you read and, closely, follow Robin2's simple rf24 tutorial you should be able to get them working. That tutorial sure helped me. The code in the examples has been proven to work many many times. If it does not work for you, there is likely a hardware problem.

Run the CheckConnection.ino (look in reply #30 in the tutorial) to verify the physical wiring between the radio module and its processor (Arduino).

Make sure the rf24 power supply can provide enough current. This is especially true for the high power (external antenna) modules. I use homemade adapters like these. They are powered by 5V and have a 3.3V regulator on the board. Robin2 also has suggested trying with a 2 AA cell battery pack.

If using the high powered radios make sure to separate them by a few meters. They may not work too close together. Try the lower power settings.

Reset the radios by cycling power to them after uploading new code. I have found that to help. They do not reset with the Arduino.

Switch to 1MB data rate to catch the not so cloned clones.
radio.setDataRate( RF24_1MBPS );

Also for some clones, change TMRh20's RF24.cpp line 44
_SPI.setClockDivider(SPI_CLOCK_DIV2);
Into
_SPI.setClockDivider(SPI_CLOCK_DIV4);

Also, when two nRFs are talking to each other, it is important to use conditional statements instead of delays. In using delays the contollers would be out of sync and there wouldnt be any transmission of data

You have to use strcmp() etc. if you want to compare the contents of a character array. The "==" equality operator works in this context only with the String class.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.