| 
 | 
 
大家好:我按照網路的範例程式  想要使用收發器 
但不管我參照哪種方法  顯示的結果都是發不出去 
我CLIENT是使用MEGA版  SERVER端是UNO版 
想請問到底哪邊出問題  為啥總是出現nrf24.init() 
在這裡面我挑選一個我最能理解的程式碼  CLIENT端如下: 
#include <SPI.h> 
#include <RH_NRF24.h> 
 
// Singleton instance of the radio driver 
RH_NRF24 nrf24; 
// RH_NRF24 nrf24(8, 7); // use this to be electrically compatible with Mirf 
// RH_NRF24 nrf24(8, 10);// For Leonardo, need explicit SS pin 
// RH_NRF24 nrf24(8, 7); // For RFM73 on Anarduino Mini 
 
void setup()  
{ 
  Serial.begin(9600); 
  while (!Serial)  
    ; // wait for serial port to connect. Needed for Leonardo only 
  if (!nrf24.init()) 
    Serial.println("init failed"); 
  // Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm 
  if (!nrf24.setChannel(1)) 
    Serial.println("setChannel failed"); 
  if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) 
    Serial.println("setRF failed");     
} 
 
 
void loop() 
{ 
  Serial.println("Sending to nrf24_server"); 
  // Send a message to nrf24_server 
  uint8_t data[] = "Hello World!"; 
  nrf24.send(data, sizeof(data)); 
 
  nrf24.waitPacketSent(); 
  // Now wait for a reply 
  uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; 
  uint8_t len = sizeof(buf); 
 
  if (nrf24.waitAvailableTimeout(500)) 
  {  
    // Should be a reply message for us now    
    if (nrf24.recv(buf, &len)) 
    { 
      Serial.print("got reply: "); 
      Serial.println((char*)buf); 
    } 
    else 
    { 
      Serial.println("recv failed"); 
    } 
  } 
  else 
  { 
    Serial.println("No reply, is nrf24_server running?"); 
  } 
  delay(400); 
} 
 
 
 
 
SERVER端如下: 
#include <SPI.h> 
#include <RH_NRF24.h> 
 
// Singleton instance of the radio driver 
RH_NRF24 nrf24; 
// RH_NRF24 nrf24(8, 7); // use this to be electrically compatible with Mirf 
// RH_NRF24 nrf24(8, 10);// For Leonardo, need explicit SS pin 
// RH_NRF24 nrf24(8, 7); // For RFM73 on Anarduino Mini 
 
void setup()  
{ 
  Serial.begin(9600); 
  while (!Serial)  
    ; // wait for serial port to connect. Needed for Leonardo only 
  if (!nrf24.init()) 
    Serial.println("init failed"); 
  // Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm 
  if (!nrf24.setChannel(1)) 
    Serial.println("setChannel failed"); 
  if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) 
    Serial.println("setRF failed");     
} 
 
void loop() 
{ 
  if (nrf24.available()) 
  { 
    // Should be a message for us now    
    uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN]; 
    uint8_t len = sizeof(buf); 
    if (nrf24.recv(buf, &len)) 
    { 
//      NRF24::printBuffer("request: ", buf, len); 
      Serial.print("got request: "); 
      Serial.println((char*)buf); 
 
      // Send a reply 
      uint8_t data[] = "And hello back to you"; 
      nrf24.send(data, sizeof(data)); 
      nrf24.waitPacketSent(); 
      Serial.println("Sent a reply"); 
    } 
    else 
    { 
      Serial.println("recv failed"); 
    } 
  } 
} |   
 
 
 
 |