Olá, amigos. Estou com uma dúvida que talvez, muitos considerarão uma dúvida tola. Estou tentando montar um simples transmissor de alguns caracteres de teclado via bluetooth. O receptor , é um Arduino Uno configurado como teclado USB, com um shield vusb caseiro montado na protoboard. Há neste receptor um módulo bluetooth hc 05 como escravo. O transmissor, tem um outro módulo hc-05, mas este está em modo mestre. Há também um pushbutton que ao ser pressionado, envia um caractere via Serial.write() . O receptor recebe e escreve o caractere. Só que quando eu envio o caractere, ele fica repetindo infinitamente. Por exemplo, pressiono o botão para enviar o caratere 'J'. Este caractere fica se repetindo infinitamente, mesmo quando solto o botão, fica enviando "jjjjjjjjjjj" sem parar. Se desconectar o dispositivo receptor a repetição acaba.  Não é o receptor porque eu fiz uma aplicação simples no app inventor,  que envia caracteres para este receptor. Funciona perfeitamente. Mas com hc 05 master fica dando este problema. Pode ser um erro tolo no meu código mas eu não consigo ver o que é. O código é:

#include <SoftwareSerial.h>

SoftwareSerial BTMasterHC05(2, 3); // RX do BT | TX do BT
int pino = 4;



void setup() {
Serial.begin(9600);
BTMasterHC05.begin(9600);
pinMode(pino, INPUT_PULLUP);

}


void loop() {

if (digitalRead(pino) == LOW) {

Serial.print("Pressed:");

BTMasterHC05.write('J');

}


}

 Qual seria uma exceção que poderia ser criada para interromper o envio do caractere 'J' nesta skecth, quando o botão não está pressionado ? alguém poderia me dar uma força ?

     Obrigado. 

Exibições: 345

Responder esta

Respostas a este tópico

seu shield teclado não ta faltando resistor de pull down ou pull-up não?

t+

não, amigo. Está tudo ok com o shield gambiarra(rs). Tanto que como eu tinha dito , eu criei um app simples para Android e o shield recebe os dados perfeitamente. A encrenca tá é com o transmissor simples que estou montando. Obrigado !

cria uma variavel indicando o estado atual do botao.

compara o estado atual com o estado novo(lido)

caso estados estiverem diferentes => imprime e atualiza estado atual

no proximo loop, os estados estarao iguais e nao ira imprimir mais até soltar o botao

olá. Bom...eu fiz algo do tipo booleano.Mesmo assim não deu certo. Também tentei um else. Tipo...se está low acontece A e se está high acontece B. Mais tarde eu vou tentar fazer uma mudança no char enviado. Se isso não funcionar, eu desisto. Obrigado ! 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço