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!