I'm attempting to transmit very simple data across some NRF24l01 modules for testing purposes, and I've been following a YouTube guide.
Here is my code:
Trasmitter:
#include "RF24.h"
#include <SPI.h>
RF24 Radio (7, 8);
byte address[][6] = {"0"};
struct package{
int on = 1;
};
typedef struct package Package;
Package data;
void setup() {
Serial.begin(9600);
delay(1000);
Radio.begin();
Radio.setChannel(118);
Radio.setPALevel(RF24_PA_LOW);
Radio.setDataRate(RF24_250KBPS);
Radio.openWritingPipe(address[0]);
delay(1000);
}
void loop() {
Radio.write(&data, sizeof(data));
Serial.println("Data sent:");
Serial.println(data.on);
delay(1000);
}
}
Receiver:
#include "RF24.h"
#include <SPI.h>
RF24 Radio (7, 8);
byte address[][6] = {"0"};
struct package{
int on = 1;
};
typedef struct package Package;
Package data;
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
delay(1000);
Radio.begin();
Radio.setChannel(118);
Radio.setPALevel(RF24_PA_LOW);
Radio.setDataRate(RF24_250KBPS);
Radio.openReadingPipe(1, address[0]);
Radio.startListening();
delay(1000);
}
void loop() {
while(Radio.available()){
Radio.read(&data, sizeof(data));
if(data.on == 1){
digitalWrite(2, HIGH);
}
else if(data.on == 0){
digitalWrite(2, HIGH);
}
else{
digitalWrite(2, LOW);
}
Serial.println(data.on);
}
while(!Radio.available()){
Serial.println("Error");
}
delay(1000);
}
When I run the code on each respective unit, I receive only zeros on the receiver. Since I don't see where data.on could get set to zero in my code, I'm assuming there is a communication issue somehow between the two modules, even though Radio.available() is functioning properly.
Am I missing something obvious?