Falha no envio de dados do Arduíno para Android com módulo HC-05

Galera estou com um problema serio, montei um código para calcular a profundidade e a frequência  durante treinamento para massagens cardíacas no RCP (Ressuscitação Cardio Pulmonar). O problema é, eu fiz o código e testei as partes separadamente para verificar possíveis erros, contudo quando conecto o Arduíno no Android usando o módulo HC-05, nenhum dos comandos são acionados, tais como Start, Stop e Reset.

Detalhes:

Arduíno  ATMEGA2560

Aplicativo MicroControllerBT

Modulo HC-05

Código:

int cont = 0;
int d = 0;
int Max= 0;
int Min= 1023;
int seg = 0;
int ult_seg = 0;
int tempo =0;
int tempo_total =0;
int LED = 10;
int Freq = 0;
int Stop = 7;
int reset = 8;
int start = 9;
int luz;
int Dluz= 0;
void setup()
{
pinMode(LED,OUTPUT);
pinMode(start, OUTPUT);
pinMode(Stop,OUTPUT);
pinMode(reset, OUTPUT);
Serial.begin(9600);
delay(5000);
}
void loop()
{
delay(1000);
if(Serial.available()>=2)
{
int key=Serial.read();
int val=Serial.read();
digitalWrite(key,val);
}
if (start== HIGH)
{
if(Serial.available()>=2)
{
int key=Serial.read();
int val=Serial.read();
digitalWrite(key,val);
}
// função millis
millis ();
// função geral
while(Stop==LOW)
{
seg = (millis()/1000);
if (seg - ult_seg>=1)
{
ult_seg=seg;
tempo++;
}
// transforma o valor da luz em porcentagem
luz=analogRead(A2);
int porcento = map(luz, 1023, 0, 0, 100);
// zera o valor das variaveis
Min=1023;
Max=0;
// calcula distancia de ida
while (Min >= luz)
{
luz=analogRead(A2);
Min = luz;
}
// calcula a distancia de volta
while (Max < luz)
{
luz=analogRead(A2);
Max = luz;
}
//calcula a distancia atraves da intensidade luminoza
Dluz = Max-Min;

if(Dluz >=0 && Dluz <=9)
{
d=7;
}
if (Dluz >9 && Dluz <=15)
{
d=6;
}
if(Dluz >15 && Dluz <=20)
{
d=5;
}
if ( Dluz >20 && Dluz <=26)
{
d=4;
}
if (Dluz >26 && Dluz <= 34)
{
d=3;
}
if (Dluz >34 && Dluz <=40)
{
d=2;
}
if (Dluz >40 && Dluz <=1023)
{
d=1;
}

if ( d >= 5)
{
cont++;
}
// calculo da frequencia por minuto
tempo_total=(tempo/60);
Freq = cont/tempo_total;
//Envia o valor da frequencia por minuto
Serial.write(205);
Serial.write(highByte(Freq));
Serial.write(lowByte(Freq));

// Envia o valor da distancia em porcentagem
Serial.write(202);
Serial.write(highByte(porcento));
Serial.write(lowByte(porcento));

//Envia o valor da distancia em cm
Serial.write(204);
Serial.write(highByte(d));
Serial.write(lowByte(d));
}
if(Serial.available()>=2)
{
int key=Serial.read();
int val=Serial.read();
digitalWrite(key,val);
}
delay(1000);
if (reset== HIGH)
{
return setup();
}
}
}

Exibições: 289

Anexos

Responder esta

Respostas a este tópico

Bom dia!

Você verificou a informação que está chegando do app para o Arduino? Se não, faça um teste simples de comunicação, crie um programa no arduino que somente leia e escreva no monitor as informações provenientes do Bluetooth, por exemplo:

Obs.: No modelo a baixo, os pinos do Bluetooth RX e TX estão respectivamente conectados as portas digitais 2 e 3 do Arduino!

#include <SoftwareSerial.h>

int PIN_BT_RX = 2;
int PIN_BT_TX = 3;
//Define os pinos para a serial  
SoftwareSerial mySerial(PIN_BT_RX, PIN_BT_TX); // RX, TX

char actualChar;


void setup() {
  Serial.begin(9600); 
  Serial.println("INICIANDO LEITURA BT: "); 
 
  //Inicia a serial configurada nas portas 10 e 11
  mySerial.begin(9600);
}

void loop() {
  // Read device output if available.
  if (mySerial.available()){
    actualChar = (char)mySerial.read();
    Serial.print("Menssagem recebida: ");

    Serial.println(actualChar);
  }
  delay(20);
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço