Buenas a todos
basicamente mi problema es que no puedo lograr prender varios leds con varios botones.
Ejemplo
Los botones estan conectados en el emisor y los leds al receptor
Btn al presionarse encendera el led1
Btn2 al presionarse encendera el led2
Btn3 al presionarse encendera el led3
etc etc etc
Con este codigo que abajo dejare pude prender y apagar un solo led, pero cuando quiero ingresar mas botones y mas leds estos no responden.
Como puedo adaptar el codigos de aquí debajo para que el boton de los pines (por ejemplo) 6 y 7 de la placa emisora prendan los leds de los pines 6 y 7 de la placa receptora?
aun no entiendo muy bien el lenguaje de programacion en arduino y un poco me marea el tema de matrices y creo que el problema es ese, al prender o apagar un led lo que hago es mandarle una informacion (1 o 0) dependiendo el estado anterior del boton y con esa informacion el led prende(1) o apaga(0) cuando quise adaptarlo lo que puse fue mas tamano en la matriz ([3]) y usando el 2 y el 3 para prender y apagar el segundo led del arduino receptor pero esto no me funciono correctamente.
Quiza lo que acabo de decir sea una estupidez absoluta (seguramente) y la solucion sea mucho mas facil.
EMISOR
// Incluimos las librerías necesarias
#include <SPI.h> // Librería para la comunicación SPI
// Librerías para el funcionamiento del módulo NRF24L01
#include <nRF24L01.h>
#include <RF24.h>
// Declaramos los pines de control del módulo NRF24L01
#define CE 9
#define CSN 10
// Se crea el objeto tipo RF24
RF24 radio(CE, CSN);
// Se declara el canal (64 bits en hexadecimal) para transmisión RF
const uint64_t canal = 0xE8E8F0F0E1LL;
// Variable que enviamos mediante RF (de tipo string siempre)
unsigned int estado_pulsador[1];
int pulsador = 7; // Pin digital 7 para el pulsador
// Inicializamos las variables internas para el pulsador
int encender = 0;
int anterior = 0;
int estado = 0;
void setup()
{
pinMode(pulsador, INPUT); // Pin digital del pulsador como entrada
radio.begin(); // Inicialización de la comunicación RF
radio.openWritingPipe(canal); // Se abre el canal para escritura
}
void loop()
{
estado = digitalRead(pulsador); // Guardamos el estado actual del pulsador
if(estado && anterior == 0) // Comparamos el estado actual y el anterior del pulsador
{
encender = 1 - encender;
delay(300); // Evita los posibles rebotes del pulsador.
}
anterior = estado; // Actualizamos el estado del pulsador.
if(encender) // Si el estado interno del pulsador pasa de "LOW" a "HIGH".
{
estado_pulsador[0] = 1; // La variable vale 1
}
else // Si el estado interno del pulsador pasa de "HIGH" a "LOW".
{
estado_pulsador[0] = 0; // La variable vale 0
}
// Se envía el valor de la variable estado_pulsador[0] a través de RF
radio.write(estado_pulsador, sizeof(estado_pulsador));
}
RECEPTOR
// Incluimos las librerías necesarias
#include <SPI.h> // Librería para la comunicación SPI
// Librerías para el funcionamiento del módulo NRF24L01
#include <nRF24L01.h>
#include <RF24.h>
// Declaramos los pines de control del módulo NRF24L01
#define CE 9
#define CSN 10
// Se crea el objeto tipo RF24
RF24 radio(CE, CSN);
// Se declara el canal (64 bits en hexadecimal) para transmisión RF
const uint64_t canal = 0xE8E8F0F0E1LL;
// Variable que enviamos mediante RF (de tipo string siempre)
unsigned int estado_pulsador[1];
int LED = 7; // Pin digital 7 para el LED
void setup()
{
radio.begin(); // Inicialización de la comunicación RF
radio.openReadingPipe(1, canal); // Se abre el canal para lectura
radio.startListening(); // Comienza a escuchar por el canal abierto para lectura
pinMode(LED, OUTPUT); // Pin digital 7 como salida
digitalWrite(LED, LOW); // Inicialmente el LED se apaga
}
void loop()
{
// Siempre que haya información disponible vía RF...
while(radio.available())
{
// Se recibe el valor de la variable estado_pulsador[0] a través de RF
radio.read(estado_pulsador, sizeof(estado_pulsador));
}
// Si el valor de la variable estado_pulsador[0] es igual a "1" se enciende el LED
if (estado_pulsador[0] == 1)
{
digitalWrite(LED, HIGH);
}
// Si el valor de la variable estado_pulsador[0] es igual a "0" se apaga el LED
if (estado_pulsador[0] == 0)
{
digitalWrite(LED, LOW);
}
}
Muchas gracias de antemano y espero puedan resolver mi problema. Saludos!