Hola, soy un principiante, estoy trabajando en mi proyecto de grado, mi proyecto de grado se basa en la automatización de los hogares con Domotica... para llevar a cabo mi proyecto estamos utilizando un código el cual me permita utilizar comandos de voz para activar cierta luz o parte de la casa, todo resulta bien y el código sale sin ningún problema, pero a la hora de utilizarlo al decir un comando para encender la luz, esto lo que hace es encenderse e instantaneamente apagarse, cuando se tendría que decir dos veces el comando para que este se apague.
Aquí les dejo el código, ojalá puedan ayudarme
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
VR myVR(2,3); // 2:RX 3:TX, you can choose your favourite pins.
uint8_t records[7]; // save record
uint8_t buf[64];
int Cocina = 13;
int Pieza = 12;
int Sala = 11;
boolean activado=false;
boolean activadoS=false;
boolean activadoP=false;
#define Encendido (0)
#define encendidos (1)
#define Encendidob (2)
void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i<len; i++){
if(buf[i]>0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print("[");
Serial.print(buf[i], HEX);
Serial.print("]");
}
}
}
void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");
Serial.print(buf[2], DEC);
Serial.print("\t\t");
if(buf[0] == 0xFF){
Serial.print("NONE");
}
else if(buf[0]&0x80){
Serial.print("UG ");
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print("SG ");
Serial.print(buf[0], DEC);
}
Serial.print("\t");
Serial.print(buf[1], DEC);
Serial.print("\t\t");
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}
void setup()
{
/** initialize */
myVR.begin(9600);
Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
pinMode(Cocina, OUTPUT);
pinMode(Pieza, OUTPUT);
pinMode(Sala, OUTPUT);
if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}
if(myVR.load((uint8_t)Encendido) >= 0){
Serial.println("Encendido Cocina");
}
if(myVR.load((uint8_t)encendidos) >= 0){
Serial.println("Encendido Pieza");
}
if(myVR.load((uint8_t)Encendidob) >= 0){
Serial.println("Encendido Sala");
}
}
void loop()
{
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case Encendido:
/** turn on LED */
digitalWrite(Cocina, HIGH);
if (activado==false){
activado=true;
Serial.println("Comando cocina encendido");
delay (300);
}
if(activado==true){
activado=false;
Serial.println("Comando cocina apagado");
delay (300);
}
activado=true;
break;
case encendidos:
/** turn on LED */
digitalWrite(Pieza, HIGH);
if (activado==false){
activadoP=true;
Serial.println("Comando pieza encendido");
}
if(activadoP==true){
activadoP=false;
Serial.println("Comando pieza apagado");
}
break;
case Encendidob:
digitalWrite(Sala, HIGH);
if (activado==false){
activadoS=true;
Serial.println("Comando sala encendido");
}
if(activadoP==true){
activadoP=false;
Serial.println("Comando sala apagado");
}
break;
default:
Serial.println("Record function undefined");
break;
}
printVR(buf);
}
}