#include <SoftwareSerial.
h>
#include <VoiceRecognitionV3.h>
// Configuração do módulo de voz
SoftwareSerial mySerial(10, 11); // RX, TX
VR myVR(mySerial);
// Definição dos pinos dos LEDs para cada cômodo
#define LED_SALA 2
#define LED_COZINHA 3
#define LED_CORREDOR 4
#define LED_QUARTO 5
#define LED_BANHEIRO 6
// Definição dos comandos de voz
#define CMD_TURN_ON_SALA 0
#define CMD_TURN_OFF_SALA 1
#define CMD_TURN_ON_COZINHA 2
#define CMD_TURN_OFF_COZINHA 3
#define CMD_TURN_ON_CORREDOR 4
#define CMD_TURN_OFF_CORREDOR 5
#define CMD_TURN_ON_QUARTO 6
#define CMD_TURN_OFF_QUARTO 7
#define CMD_TURN_ON_BANHEIRO 8
#define CMD_TURN_OFF_BANHEIRO 9
#define CMD_AUTOMATIC_MODE 10
#define CMD_MANUAL_MODE 11
bool manualMode = false; // Modo manual ou automático
bool ledStates[5] = {false, false, false, false, false}; // Estados dos LEDs
void setup() {
[Link](9600); // Inicializa a comunicação serial
[Link](9600); // Inicializa a comunicação com o módulo de voz
// Verifica se o módulo de reconhecimento de voz está funcionando
if ([Link]()) {
[Link]("Módulo VR pronto.");
} else {
[Link]("Módulo VR não detectado.");
while (1); // Para o código se o módulo não for encontrado
// Configura os pinos dos LEDs como saídas
pinMode(LED_SALA, OUTPUT);
pinMode(LED_COZINHA, OUTPUT);
pinMode(LED_CORREDOR, OUTPUT);
pinMode(LED_QUARTO, OUTPUT);
pinMode(LED_BANHEIRO, OUTPUT);
// Inicializa todos os LEDs como desligados
digitalWrite(LED_SALA, LOW);
digitalWrite(LED_COZINHA, LOW);
digitalWrite(LED_CORREDOR, LOW);
digitalWrite(LED_QUARTO, LOW);
digitalWrite(LED_BANHEIRO, LOW);
// Carrega os comandos de voz (grupo 0 é o padrão)
[Link]((uint8_t)0);
void loop() {
uint8_t buf[64]; // Buffer para armazenar o comando de voz reconhecido
// Verifica se um comando de voz foi reconhecido
if ([Link](buf, 50) > 0) {
switch (buf[1]) { // Analisa o comando reconhecido
case CMD_TURN_ON_SALA:
if (manualMode) {
[Link]("Ligar luz na sala");
digitalWrite(LED_SALA, HIGH);
ledStates[0] = true;
break;
case CMD_TURN_OFF_SALA:
if (manualMode) {
[Link]("Desligar luz na sala");
digitalWrite(LED_SALA, LOW);
ledStates[0] = false;
break;
case CMD_TURN_ON_COZINHA:
if (manualMode) {
[Link]("Ligar luz na cozinha");
digitalWrite(LED_COZINHA, HIGH);
ledStates[1] = true;
}
break;
case CMD_TURN_OFF_COZINHA:
if (manualMode) {
[Link]("Desligar luz na cozinha");
digitalWrite(LED_COZINHA, LOW);
ledStates[1] = false;
break;
case CMD_TURN_ON_CORREDOR:
if (manualMode) {
[Link]("Ligar luz no corredor");
digitalWrite(LED_CORREDOR, HIGH);
ledStates[2] = true;
break;
case CMD_TURN_OFF_CORREDOR:
if (manualMode) {
[Link]("Desligar luz no corredor");
digitalWrite(LED_CORREDOR, LOW);
ledStates[2] = false;
break;
case CMD_TURN_ON_QUARTO:
if (manualMode) {
[Link]("Ligar luz no quarto");
digitalWrite(LED_QUARTO, HIGH);
ledStates[3] = true;
break;
case CMD_TURN_OFF_QUARTO:
if (manualMode) {
[Link]("Desligar luz no quarto");
digitalWrite(LED_QUARTO, LOW);
ledStates[3] = false;
break;
case CMD_TURN_ON_BANHEIRO:
if (manualMode) {
[Link]("Ligar luz no banheiro");
digitalWrite(LED_BANHEIRO, HIGH);
ledStates[4] = true;
break;
case CMD_TURN_OFF_BANHEIRO:
if (manualMode) {
[Link]("Desligar luz no banheiro");
digitalWrite(LED_BANHEIRO, LOW);
ledStates[4] = false;
break;
case CMD_AUTOMATIC_MODE:
[Link]("Modo automático ativado");
manualMode = false;
break;
case CMD_MANUAL_MODE:
[Link]("Modo manual ativado");
manualMode = true;
break;
default:
[Link]("Comando não reconhecido");
break;
if (!manualMode) {
int sensorValues[5];
sensorValues[0] = analogRead(LDR1);
sensorValues[1] = analogRead(LDR2);
sensorValues[2] = analogRead(LDR3);
sensorValues[3] = analogRead(LDR4);
sensorValues[4] = analogRead(LDR5);
for (int i = 0; i < 5; i++) {
int ledPin1 = 2 + (i * 2);
int ledPin2 = 3 + (i * 2);
if (sensorValues[i] < 500) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
} else {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}
}
} else {
for (int i = 0; i < 5; i++) {
int buttonState = digitalRead(A0 + i);
if (buttonState == LOW) {
ledStates[i * 2] = !ledStates[i * 2];
ledStates[i * 2 + 1] = !ledStates[i * 2 + 1];
delay(200);
}
digitalWrite(2 + (i * 2), ledStates[i * 2]);
digitalWrite(3 + (i * 2), ledStates[i * 2 + 1]);
}
}
}