// PABLO_CAMBA_LORENZANA
//  MANDO_TRANSMISOR 

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

//Pines del módulo NRF24L01
RF24 radio(9, 10); // CE, CSN

//Dirección de comunicación (debe coincidir en ambos Arduinos)
const byte direccion[6] = "car01";

//Pines de entrada del mando
const int ejeVelocidad = A0;  //Joystick Y
const int ejeDireccion = A1;  //Joystick X
const int botonLuces = 7;     //Botón para luces

//Estructura para los datos a enviar
struct Datos {
  int velocidad;
  int direccion;
  bool luces;
};
Datos datos;

//Variables de control del botón
bool ultimoEstadoBoton = HIGH;
bool estadoLuces = false;

void setup() {
  pinMode(botonLuces, INPUT_PULLUP); //Botón con resistencia interna
  
  radio.begin();

  //Configuración para máximo alcance
  radio.setPALevel(RF24_PA_LOW);      //Potencia máxima
  radio.setDataRate(RF24_250KBPS);    //Velocidad baja = más alcance y estabilidad
  radio.setChannel(108);              //Canal 108 (2.508 GHz, menos interferencias WiFi)

  radio.openWritingPipe(direccion);   //Canal de comunicación
  radio.stopListening();              //Modo transmisor
}

void loop() {
  //Leer joysticks
  datos.velocidad = analogRead(ejeVelocidad);
  datos.direccion = analogRead(ejeDireccion);

  //Leer botón (con detección de flanco)
  bool estadoActual = digitalRead(botonLuces);
  if (estadoActual == LOW && ultimoEstadoBoton == HIGH) {
    estadoLuces = !estadoLuces;  //Cambia el estado de luces
    delay(200); // Antirrebote
  }
  ultimoEstadoBoton = estadoActual;

  datos.luces = estadoLuces;

  //Enviar estructura por radio
  radio.write(&datos, sizeof(datos));

  delay(50); //Envía ~20 veces por segundo
}
