Comunicación bidireccional nRF24L01

Hola!!

Estoy intentando crear una conexión bidireccional. La idea es:

  • Arduino Maestro manda un número al esclavo para encender un Led

  • Arduino Esclavo lee el número y enciende el Led, cuando un objeto está a menos de 15cm apaga el Led

  • Arduino Esclavo manda "una señal" de que el Led está apagado al Arduino maestro para que vuelva a mandar el número.

Hasta ahora funciona todo bien excepto que no consigo que el Arduino Maestro lea la señal de que el Led está apagado que manda el Arduino esclavo.

Os dejo el código.

Emisor

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


RF24 radio(9,10);
const byte canales[][6] = {"00001", "00002", "00003"};

int estado = 7;

void setup(void){
  Serial.begin(9600);
  radio.begin();
  radio.setRetries(15,15);
  radio.openWritingPipe(canales[0]);
  radio.openReadingPipe(1, canales[1]);
}

void loop(void){
  radio.stopListening();
 
    int luz = 3;
    radio.write(&luz, sizeof(luz));
    Serial.println(luz);

  radio.startListening();
  if (radio.available()){
    radio.read(&estado, sizeof(estado));
    Serial.print("Estado: ");
    Serial.println(estado);
  }
}

Receptor

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

int luz = 0;
int estado = 0;
// Definicion Echo, Trig y variables Ultrasonido
#define echoPinVerde 6
#define trigPinVerde 7
long duracion, distanciaVerde;

//Definición nRF
RF24 radio(9,10);
const byte canales[][6] = {"00001", "00002", "00003"};

//Led
int LED1 = 3;

void setup(void){
  Serial.begin(9600);
  radio.begin();
  radio.setRetries(15,15);
  radio.openWritingPipe(canales[1]);
  radio.openReadingPipe(1, canales[0]);
  radio.startListening();
  pinMode(LED1, OUTPUT);
  //Sensor de proximidad
  pinMode(trigPinVerde, OUTPUT);
  pinMode(echoPinVerde, INPUT);
  }
 
void loop(void){

if (radio.available()){
  radio.read(&luz, sizeof(luz));
  Serial.println(luz);
  digitalWrite(luz, HIGH);
  radio.stopListening();

 while (luz == 3) {
    digitalWrite(trigPinVerde, LOW);   
    delayMicroseconds(2);           
    digitalWrite(trigPinVerde, HIGH);   
    delayMicroseconds(10);         
    digitalWrite(trigPinVerde, LOW);
     
    duracion = pulseIn(echoPinVerde, HIGH);
    distanciaVerde = (duracion/2)/29;
    Serial.print(double(distanciaVerde)); 
    Serial.println(" cm.");
    
    if (distanciaVerde <=15) {
      digitalWrite(luz, LOW); 
      luz = 0;
      estado = 1;
      Serial.println(estado);
    }
  radio.write(&estado, sizeof(estado));
  Serial.print("Estado: ");
  Serial.println(estado);
  estado = 0;
  radio.startListening();
  }
}
}

A ver si alguien me puede ayudar por favor.
Gracias!

Nadie?...

2 preguntas he puesto en el foro y mucha lectura pero nadie ayuda... no creo que sea tan difícil ayudarme viendo los proyectos que manejáis por el foro...

Moderador:
Responder podemos responderte pero si tu creas un doble post, estas cometiendo una falta grave a las normas del foro pasible de un baneo que por esta vez pasa pero no la próxima asi que te invito a que leas las normas nuevamente.
Como tienes tu respuesta en el foro en inglés y ya te expliqué que doble postear es una falta. Sigue allí tu información.

Tu respuesta esta muy respondida en este foro. Justamente nRF24 es un tema ampliamente difundido.
Por favor, si ahora encuentras hilos viejos, que tienen mas de 120 dias sin respuesta, los dejas asi porque revivirlos no esta permitido tampoco.
Yo no establecí las normas, solo me ocupo de que se cumplan. Digo esto por si tienes observaciones, entonces me las haces por privado.
Recuerda no doble postear otra vez.
En Documentación hasta hay tutoriales del tema.

Gracias.

Tu hilo en el foro en inglés Problem with nRF24L01