Ayuda, como hago para enviar desde dos NRF (trasmisores) a un solo NRF (Receptor)
Código del Transmisor 1 Botones
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE 9
#define CSN 10
//Receptor
//IRQ //12
//11 //13
//10 //9
//3V3//GND
int BUTON1=2;
int BUTON2=3;
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE,CSN);
int data[2]={0,0};//=data[0];data[1]
void setup(){
radio.begin();
radio.openWritingPipe(pipe);//escribe el dato
pinMode(BUTON1, INPUT);
pinMode(BUTON2, INPUT);
}
void loop(){
data[0] = digitalRead(BUTON1);// lee el dato en 0
delay(50);
data[1] = digitalRead(BUTON2);// lee el dato en 0
delay(50);
radio.write( data, sizeof(data) ); //envia dato
}
Código del transmisor 2 Sensor PIR
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define CE 9
#define CSN 10
//Receptor
//IRQ //12
//11 //13
//10 //9
//3V3//GND
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE, CSN);
int pir[1];
void setup(){
radio.begin();//inicializa
radio.openWritingPipe(pipe);//escribe el dato
pinMode(2, INPUT);
}
void loop(){
pir[0] = digitalRead(2);// lee el dato en el pin 2
radio.write( pir, sizeof(pir) );
delay(100);
}
Código del Receptor (RTC - LCD16x2)
#include <SPI.h>
#include <LiquidCrystal.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include "Sodaq_DS3231.h" // Real Time Clock RTC
#define CE 9
#define CSN 10
//Receptor
//IRQ //12
//11 //13
//10 //9
//3V3//GND
const uint64_t pipe[] = {0xE8E8F0F0E1LL,0xF0F0F0F0D2LL};
RF24 radio(CE, CSN);
int pir[1];
int data[4]={0,0,0,0};
LiquidCrystal lcd(8, 7, 6, 5, 4, 3);
void setup() {
Wire.begin();
rtc.begin();
radio.begin();
radio.openWritingPipe(pipe[1]);//canal para escritura
radio.openReadingPipe(1,pipe[0]);//canal para escucha
lcd.begin(16,2); //(colum, filas)
}
void loop() {
printTime();
radio.startListening();
while(radio.available()){
radio.read( data , sizeof(data) );
radio.read(pir , sizeof(pir));
}
delay(20);
radio.stopListening();
pir[0]=data[2];
radio.write(data,sizeof(data)) ;
delay(20);
}
void printTime(){
DateTime now = rtc.now();
lcd.setCursor(4,0);
if (now.hour()<10){
lcd.print("0");
}
lcd.print(now.hour());
lcd.print(':');
if (now.minute()<10){
lcd.print("0");
}
lcd.print(now.minute());
lcd.print(':');
if (now.second()<10){
lcd.print("0");
}
lcd.print(now.second());
lcd.setCursor(1,1);
lcd.print("Vallesol S.A.C ");
delay(10);
if((now.hour()>=9) && (now.hour()<=23)){
if((now.minute()==0 && now.second()==0) || ((now.minute()%2)==0 && now.second()==0)){
data[3]=1;
radio.write( data , sizeof(data) );
delay(10);
data[3]=0;
}
}
}