Ola galera fiz um projeto com conexão ao bluetooth, o arduino recebe um caracter por segundo, assim quando ele não receber irá identificar e saberá que não está conectado.

fiz assim:

void partida(){

caracter = Serial.read();
aux = caracter;

switch (aux){ /liga
case '1':

digitalWrite(rele2,1);
digitalWrite(rele1, 1);
delay(1700);
digitalWrite(rele1,0);

break;

case '2': //CASO CONECTADO PAINEL ON, DESCONECTADO PAINEL OFF
digitalWrite(rele2,1);
digitalWrite(rele1, 0);

break;default:

digitalWrite(rele2,0);
digitalWrite(rele1, 0);
}
aux = 0;
delay(500);
}

O bluetooth envia o num.2 a cada 1 seg. ate ai tudo bem o problema e quando nao envia nada ele demora muito a entrar no default(as vezes demora 10 seg. 8seg 20seg).VLw

Exibições: 246

Responder esta

Respostas a este tópico

Wellington, 

vou falar uma coisa que eu não sei direito, mas alguns módulos de BT tem um pino que identifica se ele está conectado ou não. O mesmo esquema da luz que pisca quando não está conectado.

Vc pode utilizar o pino na sua programação. Se não der certo, menos elegantemente, pode ser utilizado até um ldr para identificar acesa X piscando....

Espero ter ajudado, Abç    

Pra debugar esse tipo de situação o legal seria ligar uns 2 leds auxiliares e mandar acender quando está em cada parte do programa.

Acredito que se vc fizer acender um led pouco antes do "caracter = Serial.read();" e apagar logo depois vai ver que ele fica esperando um caractere.

Isso acontece pq existe um timeout para leitura do caracter. Ele espera para receber por um tempo antes de desistir.

Para evitar isso existe o Serial.available() que retorna se tem algum byte para ser lido.

http://arduino.cc/en/Serial/Available

Veja se usar ele resolve seu problema..

Wellington, 

Procure não usar delays no programa, use o timer estourando a cada 1ms por exemplo e faz um sistema com maquinas de estados com  contadores. Coloca um timeout na comunicação, se ficar por exemplo 1500ms sem receber nada, entende-se que perdeu a comunicação e executa a rotina default.Isso abre um  leque muito grande nas aplicações, é um pecado deixar o processador preso a delays.

Abraço!

Galera muito obrigado pelas dicas vou dar uma lida sobre o serial.available e sobre o timeout,,,Quando finalizar posto pra galera!vlw!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço