我有Arduino和Duinotech NRF24L01,我试图发送带有疯子错误RF24库的字符串“ Hello world”,但是,我认为它无法检测到传入的RF信号。
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(7, 8); // CE, CSN
const uint64_t pipe = 0xF0F0F0F0E1L;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, pipe);
radio.startListening();
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
}
else {
Serial.println("Data was not found");
}
在读取的代码中,它将始终执行未找到数据。这使我认为也许根本找不到RF信号。
这是写入数据的代码。
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(7, 8); // CE, CSN
int text = 1;
const uint64_t pipe = 0xF0F0F0F0E1LL;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
radio.stopListening();
}
void loop() {
radio.write(&text, sizeof(text));
Serial.println("Sending Data");
delay(1000);
}
答案 0 :(得分:0)
尝试一下
对于发送器,请使用const uint64_t pipe = 0xF0F0F0F0E1LL;
代替const byte address[6] = "00001";
作为地址,然后像下面的代码那样使设置无效
void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
然后确保您为要传输的测试变量设置了一个值,如下所示:
void loop() {
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
Serial.println("Sending Data");
delay(1000);
}
在接收方运行此代码
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text); //This will print out the received value
}
}
PS:确保所有连接均已连接到正确的引脚
然后您可以通过添加以下代码来测试NRF24L01芯片是否正确连接
bool result = radio.isChipConnected ();
Serial.println (result);
如果NRF24L01芯片连接正确,它应该在串行监视器上输出1