Este controlador comando meu carro via celular com comandos e voz e por meio de teclas. Por meio de teclas está tudo bem, mas por voz quando ligo o farol ele acende, mas quando ligo a lanterna o farol apaga, depois disso, eles ficam alternando, quando um liga o outro apaga e vice-versa. Alguém pode me ajudar.  

Nota: Me ajuda nessa aí José, 

abraços, 

==========================================================================
#include <SoftwareSerial.h> //Inlcui a biblioteca SoftwareSerial.h
#define RxD 0 //Define RxD como 0
#define TxD 1 //Define TxD como 1
String voice;
int x=0,y=1,z=0;

#define RELE 1 4
#define RELE 2 5
#define RELE 3 6
#define RELE 4 7
#define RELE 5 8
#define RELE 6 9
#define RELE 7 10
#define RELE 8 11
const int botao = 2;

SoftwareSerial blueToothSerial(RxD,TxD); //Instância a biblioteca SoftwareSerial.h

void setup()
{
Serial.begin(9600);
pinMode(4, OUTPUT); //Configura o pino 4 como saída
pinMode(5, OUTPUT);//Configura o pino 5 como saída
pinMode(6, OUTPUT);//Configura o pino 6 como saída
pinMode(7, OUTPUT);//Configura o pino 7 como saída
pinMode(8, OUTPUT);//Configura o pino 8 como saída
pinMode(9, OUTPUT);//Configura o pino 9 como saída
pinMode(10, OUTPUT);//Configura o pino 10 como saída
pinMode(11, OUTPUT);//Configura o pino 11 como saída

digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
pinMode(2,INPUT);
digitalWrite(2, 1);

parear_dispositivo(); //Executa a função para parear o dispositivo
}
void loop()
{

int leitura = digitalRead(2);
if (leitura == 0) { delay(60000); digitalWrite(10, HIGH);}// porta acionada, painel desliga

char letra; //Variável char para armazenar o caractere recebido
if(blueToothSerial.available()) //Se algo for recebido pela serial do módulo bluetooth
{
letra = blueToothSerial.read(); //Armazena o caractere recebido na variável letra

if(letra == 'A') // abre a porta com um pulso de 0,5s
{
digitalWrite(4, LOW);
delay(500);
digitalWrite(4, HIGH);
}
if(letra == 'B') // abre a mala com um pulso de 0,5s
{
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
}
if(letra == 'C') // abre o vidro com um pulso de 0,5s
{
digitalWrite(6, LOW);
delay(500);
digitalWrite(6, HIGH);
}

if(letra == 'D') // liga o som
{
digitalWrite(7, LOW);
}
if(letra == 'd')
{
digitalWrite(7, HIGH);
}

if(letra == 'E') // liga o farol
{
digitalWrite(8, LOW);
}
if(letra == 'e')
{
digitalWrite(8, HIGH);
}

if(letra == 'F') // liga as lanternas
{
digitalWrite(9, LOW);
}
if(letra == 'f')
{
digitalWrite(9, HIGH);
}

if(letra == 'G')// liga painel
{
digitalWrite(10, LOW);
}
if(letra == 'g')
{
digitalWrite(10, HIGH);
}

if(letra == 'H') // liga motor com pulso de 700m/s
{
digitalWrite(11, LOW);
delay (700);
digitalWrite(11, HIGH);
}

// a partir daqui é comando de voz

while (Serial.available())//Chequeando que la lectura esté disponible
{
delay(10); //Delay para dar estabilidad
char letra = Serial.read(); //Realizar la lectura Serial
if (letra == '#') {break;} //Saliendo de la iteración si comienza con #
voice += letra; //La variable voice = voice + letra
}
if (voice.length() > 0) {//Chequeando que la variable no esté vacía
Serial.println(voice);
if(voice == "*porta")
{
digitalWrite(4, LOW);
delay(1000);
digitalWrite(4, HIGH);
}
if(voice == "*mala")
{
digitalWrite(5, LOW);
delay(1000);
digitalWrite(5, HIGH);
}
if(voice == "*vidro")
{
digitalWrite(6, LOW);
delay(1000);
digitalWrite(6, HIGH);
}
else if(voice == "*som") {digitalWrite (7, LOW);}
else if(voice == "*desliga o som" || voice == "*desliga som"){digitalWrite (7, HIGH); }
else if(voice == "*farol") {digitalWrite (8, LOW);}
else if(voice == "*desliga o farol" || voice == "*desliga farol"){digitalWrite (8, HIGH); }
else if(voice == "*lanterna") {digitalWrite (9, LOW);;}
else if(voice == "*desliga a lanterna" || voice == "*desliga lanterna"){digitalWrite (9, HIGH); }
else if(voice == "*painel") {digitalWrite (10, LOW);}
else if(voice == "*desliga o painel" || voice == "*desliga painel"){digitalWrite (10, HIGH); }
else if(voice == "*motor") {digitalWrite(11, LOW);
delay(700);
digitalWrite(11, HIGH);
}
else if(voice == "*motor mais") {digitalWrite(11, LOW);
delay(1400);
digitalWrite(11, HIGH);
}
else if(voice == "*desliga tudo" || voice == "*desliga tudo")
{
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}
voice="";}
delay(100);
}
}


void parear_dispositivo()
{
blueToothSerial.begin(9600); // Configura o baud rate do bluetooth como 9600
blueToothSerial.print("\r\n+STWMOD=0\r\n"); // Configura o módulo bluetooth para trabalhar como slave
blueToothSerial.print("\r\n+STNA=SeedBTShield\r\n"); // Configura o nome do disopsitivo bluetooth
blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permite que outros dispositivos encontrem o módulo bluetooth
blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Desabilita a auto conexão
delay(2000); // Aguarda 2 segundos
blueToothSerial.print("\r\n+INQ=1\r\n"); // Habilita modo de paridade
delay(2000); // Aguarda 2 segundos
blueToothSerial.flush(); // Dá um flush na serial do módulo bluetooth
}

Exibições: 332

Responder esta

Respostas a este tópico

perceba q na linha 

else if(voice == "*lanterna") {digitalWrite (9, LOW);;} 

tem dois ;; depois da funçao 

coloque so um teste e me diga o resultado

Obrigado pelo contato José, mas isso eu já havia consertado e permanece a mesma coisa. Veja se consegue me ajudar. obg!

Rodney faça testes parciais.

Coloque comentário na frente da linha, para desativa-la.

Assim ficará mais facil descobrir onde esta o problema.

Por exemplo, testando somente o comando de voz som :

else if(voice == "*som") {digitalWrite (7, LOW);}
else if(voice == "*desliga o som" || voice == "*desliga som"){digitalWrite (7, HIGH); }
// else if(voice == "*farol") {digitalWrite (8, LOW);}
// else if(voice == "*desliga o farol" || voice == "*desliga farol"){digitalWrite (8, HIGH); }
// else if(voice == "*lanterna") {digitalWrite (9, LOW);;}
// else if(voice == "*desliga a lanterna" || voice == "*desliga lanterna"){digitalWrite (9, HIGH); }
// else if(voice == "*painel") {digitalWrite (10, LOW);}
// else if(voice == "*desliga o painel" || voice == "*desliga painel"){digitalWrite (10, HIGH); }
// else if(voice == "*motor") {digitalWrite(11, LOW);

Fiquei curioso, o smartphone é que reconhece a voz e transmite via bluetooth?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço