Go Down

Topic: nRF24l01 不能接收任何訊息 (Read 1 time) previous topic - next topic

lkys

我是在https://swf.com.tw/?p=1044 COPY AND PASTE教程的
我已經下載了RF24程式庫專案
但當我print out(rf24.available(&pipe))發現一直都是0,通道一直不會開啟。
我怎樣才能讓通道開啟呢?

這是我的發射端程式碼
Quote
#include <SPI.h>
#include "RF24.h"

RF24 rf24(7, 8); // CE腳, CSN腳

const byte addr[] = "1Node";
const char msg[] = "Happy Hacking!";

void setup() {
  rf24.begin();
  rf24.setChannel(83);       // 設定頻道編號
  rf24.openWritingPipe(addr); // 設定通道位址
  rf24.setPALevel(RF24_PA_MIN);   // 設定廣播功率
  rf24.setDataRate(RF24_250KBPS); // 設定傳輸速率
  rf24.stopListening();       // 停止偵聽;設定成發射模式
}

void loop() {
  rf24.write(&msg, sizeof(msg));  // 傳送資料
  delay(1000);
}
這是接收端的程式碼
Quote
#include <SPI.h>
#include "RF24.h"

RF24 rf24(7, 8); // CE腳, CSN腳

const byte addr[] = "1Node";
const byte pipe = 1;  // 指定通道編號

void setup() {
  Serial.begin(9600);
  rf24.begin();
  rf24.setChannel(83);  // 設定頻道編號
  rf24.setPALevel(RF24_PA_MIN);
  rf24.setDataRate(RF24_250KBPS);
  rf24.openReadingPipe(pipe, addr);  // 開啟通道和位址
  rf24.startListening();  // 開始監聽無線廣播
  Serial.println("nRF24L01 ready!");
}

void loop() {
  if (rf24.available(&pipe)) {
    char msg[32] = "";
    rf24.read(&msg, sizeof(msg));
    Serial.println(msg); // 顯示訊息內容
  }
}
另外我compile時有一些error,但仍然可以done uploading.
Quote
warning: invalid conversion from 'const byte* {aka const unsigned char*}' to 'uint64_t {aka long long unsigned int}' [-fpermissive]
   rf24.openReadingPipe(pipe, addr);
Quote
note: initializing argument 2 of 'void RF24::openReadingPipe(uint8_t, uint64_t)'
   void openReadingPipe(uint8_t number, uint64_t address);
Quote
initializing argument 1 of 'bool RF24::available(uint8_t*)'
   bool available(uint8_t* pipe_num);
是不是這些ERROR,導致通道不能開啟?
還是PROGRAM上出現了問題了?
希望能解答我的疑問,謝謝

Go Up