IntroducciónLa tarea que tiene el programa SERVIDOR es enviar un número aleatorio “usando millis()” al Esclavo. Por otro lado el Esclavo independientemente de lo que reciba envía un valor fijo “999” al Servidor.
Una vez que logres esta comunicación podrás jugar del modo que vos quieras o lo necesites. Los mensajes son independientes sin que haya una clave o tiempo para que uno u otro deba responder.
En este caso particular no necesitaba usar Cadena de caracteres, es por eso que solo podrán trabajar con números.
Las conexiones están por todas partes, pero en mi caso solo me quiero dedicar a dejarte un Sketch/Programa/Aplicación. (Inspirado en la explicación de Prometec que me enseño mucho).
SERVIDOR// MAESTRO.ino
// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// **************
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10); // Rx~ y Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 1 };
void setup(void) {
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.setRetries(15,15); // Maximos reintentos
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
void loop(void) {
delay(2500); // Solo sirve para no desbordar el Visor Serial
// Paramos la escucha para poder hablar
radio.stopListening();
unsigned long Numero = millis();
Serial.print("Mensaje Enviado ");
Serial.println(Numero);
bool ok = radio.write( &Numero, sizeof(unsigned long) );
if (ok){
Serial.println("ok...");
}else{
Serial.println("SERVIDOR:No pude enviar mi NRO.");
}
// Volvemos a escuchar al Esclavo
radio.startListening();
if ( radio.available()){
int AhoraEl;
radio.read( &AhoraEl, sizeof(int) );
if (AhoraEl != 0){
Serial.print("Recibi del Esclavo ");
Serial.println(AhoraEl);
}
}
}
ESCLAVO// ESCLAVO.ino
// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// **************
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9,10); // Rx~ / Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 2 };
void setup(void) {
pinMode(10, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.setRetries(15,15);
radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(1,pipes[0]);
}
void loop(void) {
// Escuchamos al Servidor
radio.startListening();
unsigned long ElServidor = 0;
radio.read( &ElServidor, sizeof(unsigned long) );
delay(50);
if (ElServidor !=0) {
Serial.print("Numero Recibido del Servidor = ");
Serial.println(ElServidor);
}
if ( radio.available() ) {
// Dejamos de escuchar para poder hablar
radio.stopListening();
int AhoraYo = 999;
Serial.print("Enviando Mensaje ");
Serial.println(AhoraYo);
bool ok = radio.write( &AhoraYo, sizeof(int) );
delay(50);
radio.startListening(); // Redundancia
if (ok){
Serial.println("ok...");
}else{
Serial.println("ESCLAVO:No pude enviar el 999");
}
}
}
Espero que les sirva como ha sido en mi caso personal. Les deseo lo mejor!