hola buen día, estoy tratando de hacer un receptor de varios sensores LDR por los pines digitales, hasta el momento no logro que se enlacen todos los transmisores al receptor, la verdad soy bastante nuevo en esto, me gustaría si alguien me podría dar una mano con este problema.
Este es el código del receptor:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define relayPin1 2
#define relayPin2 3
#define relayPin3 4
#define relayPin4 5
#define relayPin5 6
#define relayPin6 7
#define relayPin7 8
#define relayPin8 12
int ESTADO_LDR = 0;
RF24 radio(9, 10); // CE, CSN
const uint64_t direccion[] = {0x7878787878LL, 0xB3B4B5B6F1LL, 0xB3B4B5B6CDLL, 0xB3B4B5B6A3LL, 0xB3B4B5B60FLL, 0xB3B4B5B605LL };
void setup() {
Serial.begin(9600);
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
pinMode(relayPin4, OUTPUT);
pinMode(relayPin5, OUTPUT);
pinMode(relayPin6, OUTPUT);
pinMode(relayPin7, OUTPUT);
pinMode(relayPin8, OUTPUT);
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
digitalWrite(relayPin5, LOW);
digitalWrite(relayPin6, LOW);
digitalWrite(relayPin7, LOW);
digitalWrite(relayPin8, LOW);
radio.begin();
radio.openReadingPipe(0, direccion[0]);
radio.openReadingPipe(1, direccion[1]);
radio.openReadingPipe(2, direccion[2]);
radio.setChannel(100);
radio.setPALevel(RF24_PA_MIN);
}
void loop() {
radio.startListening();
while (!radio.available());
radio.read(&ESTADO_LDR, sizeof(ESTADO_LDR));
Serial.println(ESTADO_LDR);
if (ESTADO_LDR == 1) {
digitalWrite(relayPin1, HIGH);
}
else if (ESTADO_LDR == 0) {
digitalWrite(relayPin1, LOW);
}
else if (ESTADO_LDR == 3) {
digitalWrite(relayPin2, HIGH);
}
else if (ESTADO_LDR == 2) {
digitalWrite(relayPin2, LOW);
}
if (ESTADO_LDR == 5) {
digitalWrite(relayPin3, HIGH);
}
else if (ESTADO_LDR == 4) {
digitalWrite(relayPin3, LOW);
}
else if (ESTADO_LDR == 7) {
digitalWrite(relayPin4, HIGH);
}
else if (ESTADO_LDR == 6) {
digitalWrite(relayPin4, LOW);
}
if (ESTADO_LDR == 9) {
digitalWrite(relayPin5, HIGH);
}
else if (ESTADO_LDR == 8) {
digitalWrite(relayPin5, LOW);
}
else if (ESTADO_LDR == 11) {
digitalWrite(relayPin6, HIGH);
}
else if (ESTADO_LDR == 10) {
digitalWrite(relayPin6, LOW);
}
if (ESTADO_LDR == 13) {
digitalWrite(relayPin7, HIGH);
}
else if (ESTADO_LDR == 12) {
digitalWrite(relayPin7, LOW);
}
else if (ESTADO_LDR == 15) {
digitalWrite(relayPin8, HIGH);
}
else if (ESTADO_LDR == 14) {
digitalWrite(relayPin8, LOW);
}
}
el transmisor 1
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define LDR1 2 //CELESTE
#define LDR2 3 //AMARILLO
#define LDR3 4 //VIOLETA
#define LDR4 5 //BLANCO
int ESTADO_LDR1 = 0;
int ESTADO_LDR2 = 0;
int ESTADO_LDR3 = 0;
int ESTADO_LDR4 = 0;
RF24 radio(9, 10); // CE, CSN
/* Lista de direcciones de los transmisores
direccion1 = 0x7878787878LL (Este nodo)
direccion2 = 0xB3B4B5B6F1LL
direccion3 = 0xB3B4B5B6CDLL
direccion4 = 0xB3B4B5B6A3LL
direccion5 = 0xB3B4B5B60FLL
direccion6 = 0xB3B4B5B605LL
*/
const uint64_t direccion1[] = {0x7878787878LL};
void setup() {
pinMode(LDR1, INPUT);
pinMode(LDR2, INPUT);
pinMode(LDR3, INPUT);
pinMode(LDR4, INPUT);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, direccion1);
radio.setPALevel(RF24_PA_MIN);
radio.setChannel(100);
radio.stopListening();
}
void loop() {
ESTADO_LDR1 = digitalRead(LDR1);
ESTADO_LDR2 = digitalRead(LDR2);
ESTADO_LDR3 = digitalRead(LDR3);
ESTADO_LDR4 = digitalRead(LDR4);
if (ESTADO_LDR1 == 1)
{
ESTADO_LDR1 = 1;
}
else if (ESTADO_LDR1 == 0)
{
ESTADO_LDR1 = 0;
}
if (ESTADO_LDR2 == 1)
{
ESTADO_LDR2 = 3;
}
else if (ESTADO_LDR2 == 0)
{
ESTADO_LDR2 = 2;
}
if (ESTADO_LDR3 == 1)
{
ESTADO_LDR3 = 5;
}
else if (ESTADO_LDR3 == 0)
{
ESTADO_LDR3 = 4;
}
if (ESTADO_LDR4 == 1)
{
ESTADO_LDR4 = 7;
}
else if (ESTADO_LDR4 == 0)
{
ESTADO_LDR4 = 6;
}
radio.write(&ESTADO_LDR1, sizeof(ESTADO_LDR1));
radio.write(&ESTADO_LDR2, sizeof(ESTADO_LDR2));
radio.write(&ESTADO_LDR3, sizeof(ESTADO_LDR3));
radio.write(&ESTADO_LDR4, sizeof(ESTADO_LDR4));
}
transmisor 2
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define LDR5 2 //CELESTE
#define LDR6 3 //AMARILLO
int ESTADO_LDR5 = 0;
int ESTADO_LDR6 = 0;
RF24 radio(9, 10); // CE, CSN
/* Lista de direcciones de los transmisores
direccion1 = 0x7878787878LL
direccion2 = 0xB3B4B5B6F1LL (Este nodo)
direccion3 = 0xB3B4B5B6CDLL
direccion4 = 0xB3B4B5B6A3LL
direccion5 = 0xB3B4B5B60FLL
direccion6 = 0xB3B4B5B605LL
*/
const uint64_t direccion2[] = {0xB3B4B5B6F1LL};
void setup() {
pinMode(LDR5, INPUT);
pinMode(LDR6, INPUT);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, direccion2);
radio.setPALevel(RF24_PA_MIN);
radio.setChannel(100);
radio.stopListening();
}
void loop() {
ESTADO_LDR5 = digitalRead(LDR5);
ESTADO_LDR6 = digitalRead(LDR6);
if (ESTADO_LDR5 == 1)
{
ESTADO_LDR5 = 9;
}
else if (ESTADO_LDR5 == 0)
{
ESTADO_LDR5 = 8;
}
if (ESTADO_LDR6 == 1)
{
ESTADO_LDR6 = 11;
}
else if (ESTADO_LDR6 == 0)
{
ESTADO_LDR6 = 10;
}
radio.write(&ESTADO_LDR5, sizeof(ESTADO_LDR5));
radio.write(&ESTADO_LDR6, sizeof(ESTADO_LDR6));
}
transmisor 3
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define LDR7 2 //CELESTE
#define LDR8 3 //AMARILLO
int ESTADO_LDR7 = 0;
int ESTADO_LDR8 = 0;
RF24 radio(9, 10); // CE, CSN
/* Lista de direcciones de los transmisores
direccion1 = 0x7878787878LL
direccion2 = 0xB3B4B5B6F1LL
direccion3 = 0xB3B4B5B6CDLL (Este nodo)
direccion4 = 0xB3B4B5B6A3LL
direccion5 = 0xB3B4B5B60FLL
direccion6 = 0xB3B4B5B605LL
*/
const uint64_t direccion3[] = {0xB3B4B5B6CDLL};
void setup() {
pinMode(LDR7, INPUT);
pinMode(LDR8, INPUT);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, direccion3);
radio.setPALevel(RF24_PA_MIN);
radio.setChannel(100);
radio.stopListening();
}
void loop() {
ESTADO_LDR7 = digitalRead(LDR7);
ESTADO_LDR8 = digitalRead(LDR8);
if (ESTADO_LDR7 == 1)
{
ESTADO_LDR7 = 9;
}
else if (ESTADO_LDR7 == 0)
{
ESTADO_LDR7 = 8;
}
if (ESTADO_LDR8 == 1)
{
ESTADO_LDR8 = 11;
}
else if (ESTADO_LDR8 == 0)
{
ESTADO_LDR8 = 10;
}
radio.write(&ESTADO_LDR7, sizeof(ESTADO_LDR7));
radio.write(&ESTADO_LDR8, sizeof(ESTADO_LDR8));
}