Go Down

Topic: No puedo comunicar 2 modulos NRF24  (Read 150 times) previous topic - next topic

AlandeJesus

Jan 21, 2019, 02:19 am Last Edit: Jan 21, 2019, 02:30 am by AlandeJesus
Buen dia/tardes.

No puedo comunicar 2 modulos NRF24 de radiofrecuencia por medio de este codigo, ya que otros codigos para encender led o apagarlos los corre perfectamente pero estos codigos en especial no los corre.

Cuando lo corro solo me aparece que el envio fallo, y de ves en cuando logra mandar un dato pero no se que es lo que me podria estar fallando.

no se si me puedan hechar una mano.

Code: [Select]

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>

 RF24 radio(9,10);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

void setup(void)
{
    pinMode(10, OUTPUT);
    Serial.begin(9600);
    radio.begin();
  
    radio.setRetries(15,15);   // Maximos reintentos
    //radio.setPayloadSize(8);   // Reduce el payload de 32 si tienes problemas
  
    // Open pipes to other nodes for communication
    radio.openWritingPipe(pipes[0]);
    radio.openReadingPipe(1,pipes[1]);
}

void loop(void)
{
    radio.stopListening();    // Paramos la escucha para poder hablar
    unsigned long time = millis();
    Serial.print("Enviando  ");
    Serial.println(time);
    bool ok = radio.write( &time, sizeof(unsigned long) );

    if (ok)
        Serial.println("ok...");
    else
        Serial.println("failed");

    radio.startListening();   //Volvemos a la escucha

    unsigned long started_waiting_at = millis();
    bool timeout = false;
    while ( ! radio.available() && ! timeout )  // Esperasmos repsuesta hasta 200ms
        if (millis() - started_waiting_at > 300 )timeout = true;
    
    if ( timeout )
         Serial.println("Failed, response timed out");
    else
      { // Leemos el mensaje recibido
        unsigned long got_time;
        radio.read( &got_time, sizeof(unsigned long) );

        Serial.print("Respuesta = ");
        Serial.println(got_time);
      }
    delay(500);
}


Code: [Select]

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
 RF24 radio(9,10);
 const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

void setup(void)
{
    pinMode(10, OUTPUT);
    Serial.begin(9600);
  
    radio.begin();
    radio.setRetries(15,15);
    //radio.setPayloadSize(8);
    radio.startListening();
    radio.openWritingPipe(pipes[1]);
    radio.openReadingPipe(1,pipes[0]);
}

void loop(void)
{
    if ( radio.available() )  // Si hay datos disponibles
    {
        unsigned long got_time;
        bool done = false;
        while (!done)        // Espera aqui hasta recibir algo
           {

              done = radio.read( &got_time, sizeof(unsigned long) );
              Serial.print("Dato Recibido =");
              Serial.println(got_time);
              delay(20); // Para dar tiempo al emisor
           }

      radio.stopListening(); // Dejamos d escuchar para poder hablar

      radio.write( &got_time, sizeof(unsigned long) );
      Serial.println("Enviando Respuesta");
      radio.startListening();    // Volvemos a la escucha para recibir mas paquetes
    }
}

Go Up