2016-06-24 2 views
0

J'utilise arduino UNO et mega2560. J'ai utilisé 2 modules NRF24L01. on est pour la transmission et d'autres recevant. Problème: Je reçois des valeurs aléatoires sur le côté récepteur du moniteur série arduino. Quand j'utilise le type int, il donne continuellement des entiers aléatoires. lorsque j'utilise le type String, il donne des caractères aléatoires.NRF24L01 + PA + LNA (Transciever) ne pas communiquer entre deux arduinos

codage:

/*-----(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: [email protected]")); 

    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

Répondre

0

On dirait que vous appelez potentiellement myRadio.read() plusieurs fois avec la même variable de destination. Cela entraînera l'écrasement des données déjà stockées dans cette variable la deuxième fois que vous passerez dans la boucle while.