#include <SoftwareSerial.
h>
// ==== Pines ====
const int PIN_RELE = 7; // IN del relé
const bool RELE_ACTIVO_LOW = true; // true si tu relé se activa con LOW (muy común)
// ==== Bluetooth (HC-05/HC-06) en SoftwareSerial ====
const int BT_RX = 10; // Arduino RX (desde TX del BT)
const int BT_TX = 11; // Arduino TX (hacia RX del BT, usar divisor)
SoftwareSerial BT(BT_RX, BT_TX);
bool focoOn = false;
void aplicarEstadoFoco() {
if (RELE_ACTIVO_LOW) {
digitalWrite(PIN_RELE, focoOn ? LOW : HIGH);
} else {
digitalWrite(PIN_RELE, focoOn ? HIGH : LOW);
void setFoco(bool on) {
focoOn = on;
aplicarEstadoFoco();
void enviarEstado() {
[Link]("STATUS:");
[Link](focoOn ? "ON" : "OFF");
void procesarComando(String cmd) {
[Link]();
[Link]();
if (cmd == "ON") {
setFoco(true); [Link]("OK"); enviarEstado();
} else if (cmd == "OFF") {
setFoco(false); [Link]("OK"); enviarEstado();
} else if (cmd == "TOGGLE") {
setFoco(!focoOn); [Link]("OK"); enviarEstado();
} else if (cmd == "STATUS") {
enviarEstado();
} else if ([Link]() > 0) {
[Link]("ERR:CMD");
void setup() {
pinMode(PIN_RELE, OUTPUT);
setFoco(false); // estado inicial apagado
[Link](9600); // default HC-05/HC-06
[Link]("READY");
enviarEstado();
void loop() {
static String buf = "";
while ([Link]()) {
char c = [Link]();
if (c == '\n' || c == '\r') {
if ([Link]()) { procesarComando(buf); buf = ""; }
} else {
buf += c;
if ([Link]() > 32) buf = ""; // evita desbordes