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.
#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);
}
#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
}
}
Prog_79_B_receptor.ino (1.43 KB)
Prog_79B_Emisor.ino (1.71 KB)