NRF24L01 + PA + LNA(Transciever)不在两个arduinos之间通信

时间:2016-06-24 19:01:49

标签: arduino-uno serial-communication

我正在使用arduino UNO和mega2560。 我使用了2个模块NRF24L01。 一个用于传输和其他接收。 问题: 我在arduino串口监视器的接收端获得随机值。 当我使用int类型时,它会连续提供随机整数。 当我使用String类型时,它会给出随机字符。

编码:

/*-----( Import needed libraries )-----*/
#include <SPI.h>   // Comes with Arduino IDE
#include "RF24.h"  // Download and Install (See above)
/*-----( Declare Constants and Pin Numbers )-----*/
//None yet
/*-----( Declare objects )-----*/
// (Create an instance of a radio, specifying the CE and CS pins. )
RF24 myRadio (7, 8); // "myRadio" is the identifier you will use in following methods
/*-----( Declare Variables )-----*/
byte addresses[][6] = {"1Node"}; // Create address for 1 
int dataReceived;  // Data that will be received from the transmitter

void setup()   /****** SETUP: RUNS ONCE ******/
{
  // Use the serial Monitor (Symbol on far right). Set speed to 115200 (Bottom Right)
  Serial.begin(115200);
  delay(1000);
  //Serial.println(F("RF24/Simple Receive data Test"));
  //Serial.println(F("Questions: terry@yourduino.com"));

  myRadio.begin();  // Start up the physical nRF24L01 Radio
  myRadio.setChannel(108);  // Above most Wifi Channels
  // Set the PA Level low to prevent power supply related issues since this is a
  // getting_started sketch, and the likelihood of close proximity of the devices. RF24_PA_MAX is default.
  myRadio.setPALevel(RF24_PA_MIN);
  //  myRadio.setPALevel(RF24_PA_MAX);  // Uncomment for more power

  myRadio.openReadingPipe(1, addresses[0]); // Use the first entry in array 'addresses' (Only 1 right now)
  myRadio.startListening();

}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{

  if ( myRadio.available()) // Check for incoming data from transmitter
  {
    while (myRadio.available())  // While there is data ready
    {
      myRadio.read( &dataReceived, sizeof(dataReceived) );
      //Serial.println("Data is coming");
      // Get the data payload (You must have defined that already!)
    }
  } // DO something with the data, like print it
   else{ 
   Serial.println("Data received = ");
    Serial.println(dataReceived);
delay(200);}

}//--(end main loop )---

Reciever serial monitor

1 个答案:

答案 0 :(得分:0)

您似乎可能会使用相同的目标变量多次调用myRadio.read()

这将导致第二次进行while循环时,已经存储在该变量中的数据被覆盖。