Bom dia! Perdão pela demora pra responder, tive alguns contratempos. Primeiramente, vamos eliminar os erros que eu já corrigi. Eu estava usando uma placa já pronta com um chip max232 pra comunicação serial, o que de acordo com o meu instrutor, não permitia que o módulo se comunicasse. Retirando ele obtive sucesso em alguns testes. Agora fiz o divisor de tensão que você me disse também. Quanto aos testes, fiz o que me pediu e funcionou, os LEDs acenderam. Também fiz outro teste mandando o comando pelo PC através do MagistrumsTerminal via serial, diretamente pro módulo HC-06, sem a PIC, e recebi corretamente no celular. Joinha, o módulo funciona! Porém, quando ponho a PIC com a minha programação, as coisas simplesmente não funcionam... O módulo pareia com o celular, mas não recebo nada tanto no meu aplicativo quando no blueterm. Estou mandando em anexo as imagens dos blocos da programação do meu aplicativo. O HC-06 também está configurado corretamente (chequei isso ontem); o baud rate é 9600, paridade None, 8 bits, 1 Stop Bit. Acredito que o erro está na minha programação, entretanto não consegui encontrar o erro. Vou colocar ela aqui também, talvez você consiga encontrar. O que eu estou tentando enviar via serial é o valor da variável sinal.
#include "C:\Users\pedro.junior\Desktop\TCC_Futuro\16f877a.h"#use delay (clock=20000000)#use RS232(baud=9600, parity=N, bits=8,stop=1, xmit=PIN_C6,rcv=PIN_C7)#include "C:\Users\pedro.junior\Desktop\TCC_Futuro\lcd_flexible.c"#include "C:\Users\pedro.junior\Desktop\PICC\Drivers\string.h"void main() { output_high(PIN_E1); char c; float Valor = 0; long int duracao=0; long int cm=0; int sinal=0;set_tris_a(255);set_tris_d(0b00001110);set_tris_c(0b00000110); //Cotrigset_tris_e(255);lcd_init();printf(lcd_putc, "\fMedidor" "\nde Distancia");delay_ms(3000);output_high(PIN_E1);output_low(PIN_D0);duracao=0;while (1){ c=(sinal+0x30); putc(c); // manda c de volta para pc lcd_putc("\f"); lcd_putc(c); // imprime c no LCD delay_ms(1000);output_low(PIN_D0);delay_us(4);output_high(PIN_D0);delay_us(20);output_low(PIN_D0);duracao=0;while (!input(PIN_D1)){}while (input(PIN_D1)){duracao++;delay_us(130);}duracao = duracao*130;cm=(duracao/29)/2;printf(lcd_putc,"\fCentimetros:\n= %lu",cm);delay_ms(1000);if(cm<90){delay_ms(100);if(cm<90){sinal="e";}} if((cm>=90)&&(cm<=110)){delay_ms(100);if((cm>=90)&&(cm<=110)){sinal="a";}}if((cm>=190)&&(cm<=210)){delay_ms(100);if((cm>=190)&&(cm<=210)){sinal="b";}}if((cm>=290)&&(cm<=310)){delay_ms(100);if((cm>=290)&&(cm<=310)){sinal="c";}}if(cm>390){delay_ms(100);if(cm>390){sinal="d";}}} }
Novamente, obrigado pela ajuda