#include <SoftwareSerial.h>
// Definir pinos para o módulo Bluetooth
SoftwareSerial bluetooth(10, 11); // RX, TX
// Definir pinos dos relés
const int releLuz = 2; // Relé para iluminação
const int releAC = 3; // Relé para ar-condicionado
// Variáveis de estado
bool luzLigada = false;
bool acLigado = false;
void setup() {
// Inicializar a comunicação serial
Serial.begin(9600);
bluetooth.begin(9600);
// Configurar os pinos dos relés como saída
pinMode(releLuz, OUTPUT);
pinMode(releAC, OUTPUT);
// Desligar os dispositivos no início
digitalWrite(releLuz, HIGH); // Relé normalmente fechado (NC)
digitalWrite(releAC, HIGH);
Serial.println("Sistema pronto.");
}
void loop() {
// Verificar se há dados recebidos via Bluetooth
if (bluetooth.available()) {
char comando = bluetooth.read(); // Ler o comando enviado
// Verificar o comando recebido
if (comando == '1') { // Ligar iluminação
digitalWrite(releLuz, LOW); // Relé ligado (NO)
luzLigada = true;
bluetooth.println("Iluminação LIGADA");
}
else if (comando == '2') { // Desligar iluminação
digitalWrite(releLuz, HIGH); // Relé desligado (NC)
luzLigada = false;
bluetooth.println("Iluminação DESLIGADA");
}
else if (comando == '3') { // Ligar AC
digitalWrite(releAC, LOW); // Relé ligado (NO)
acLigado = true;
bluetooth.println("AC LIGADO");
}
else if (comando == '4') { // Desligar AC
digitalWrite(releAC, HIGH); // Relé desligado (NC)
acLigado = false;
bluetooth.println("AC DESLIGADO");
}
}
// Enviar status de luz e AC a cada 5 segundos
static unsigned long tempoAnterior = 0;
unsigned long tempoAtual = millis();
if (tempoAtual - tempoAnterior >= 5000) {
tempoAnterior = tempoAtual;
bluetooth.print("Status: Luz = ");
bluetooth.print(luzLigada ? "LIGADA" : "DESLIGADA");
bluetooth.print(", AC = ");
bluetooth.println(acLigado ? "LIGADO" : "DESLIGADO");
}
}