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
}
Tags:
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?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por