带有NRF24L01的Hello World

时间:2018-09-24 02:15:12

标签: arduino arduino-uno

我有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); 
 }

1 个答案:

答案 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