TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Alfredo_Gutna en 21 de Febrero de 2018, 02:17:51

Título: PIC16F628A Y BLUETOOTH HC06
Publicado por: Alfredo_Gutna en 21 de Febrero de 2018, 02:17:51
Hola, tengo un tiempo trabajando con microcontroladores programando en CCS el detalle es que estoy realizando un proyecto personal con un pic16f628a y un modulo bluetooth hc06, el proyecto consta de que desde la app mande un dos letras diferentes una 'C' y una 'D' para encender y apagar un pin del puerto b del pic, el detalle esta que cuando mande 'C' se encienda el pin se enclave sin importar que se desconecte el celular del modulo, hasta que se mande una 'D' para apagarlo y lo mismo si se apaga se quede asi aunque se desconecte el celular, eh estado haciendo pruebas con varios codigos y el problema es en que se quede el pin en el estado cuando se desconecta el buetooth, queria saber si alguien de usedes me podrian aconsejar que le falta a mi codigo o que le sobra, espero me puedan ayudar.

Código: [Seleccionar]
#include <16f628A.h>
#fuses XT                             
#fuses PUT                             
#fuses BROWNOUT
#use delay(clock=4000000)
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_B2,RCV=PIN_B1)


char valor;

void main()
{
set_tris_b(0b000);
Output_low(pin_b0);

while(true)
{

valor=getc();     
switch(valor)
   {
   case 'C':
   Output_high(pin_b0);
   break;
   }
valor=getc();
switch(valor)
{
   case 'D':
   Output_low(pin_b0);
   break;
   }
}
valor=getc();
}
Título: Re:PIC16F628A Y BLUETOOTH HC06
Publicado por: KILLERJC en 21 de Febrero de 2018, 07:11:33
por que usar un switch cuando tenes solo una opcion? Tu codigo no tiene nada de malo, al menos asi a simple vista. Pero estas descartando muchos valores con tantos getc. Mejor algo asi:

Código: C
  1. void main()
  2. {
  3.         set_tris_b(0b000);
  4.         Output_low(pin_b0);
  5.  
  6.         while(true)
  7.         {
  8.  
  9.                 if(kbhit())
  10.                 {
  11.                         valor = getc();
  12.                         switch(valor)
  13.                         {
  14.                                 case 'C':
  15.                                         Output_high(pin_b0);
  16.                                         break;
  17.                                 case 'D':
  18.                                         Output_low(pin_b0);
  19.                                         break;
  20.                                 default:
  21.                                         break;
  22.                         }
  23.                 }
  24.         }
  25. }
Título: Re:PIC16F628A Y BLUETOOTH HC06
Publicado por: Alfredo_Gutna en 21 de Febrero de 2018, 15:46:38
Hola KILLERJC gracias por tu aporte, probe el codigo que me propusiste el detalle es que cuando mandas la 'D' para apagar lo hace pero si deconectas la comunicacion con el modulo el pin se vuelve a encender y se queda asi, entonces que se podria escribir en el codigo para evitar esa activacion indeseada.
Título: Re:PIC16F628A Y BLUETOOTH HC06
Publicado por: tsk en 21 de Febrero de 2018, 16:31:16
Primero verifica que es lo que está mandando el módulo HC-06

Si al remover la conexión el led apagado se prende es porque está recibiendo el caracter que indica que lo debe de prender.

Imagina por un momento que al desconectarse el módulo envía por puerto serie la información de que se ha desconectado de la siguiente forma:

Código: [Seleccionar]
DISCONNECT
Ahí ya tienes la siguiente secuencia

D C C

que entra al switch y por lo tanto deja prendido el LED porque el último caracter recibido es C

Si no tienes forma de imprimir a la PC, inicialmente prueba eligiendo letras que no se encuentre en palabras como CONNECT, CONNECTED o DISCONNECT.
Título: Re:PIC16F628A Y BLUETOOTH HC06
Publicado por: remi04 en 22 de Febrero de 2018, 18:33:25
Acabo de hacer algunas pruebas con un HC06 y bueno, el modulo en si no envia nada al conectar o desconectar, sin embargo, es la app del movil la que lo hace.

 He probado por ejemplo con “BT terminal” y esto es lo que envia al conectar y desconectar.:: “ver foto en el enlace de abajo”

  Tendras que hacer lo que dice tsk y analizar qué es lo que la app envía al cortar o iniciar el enlace y tenerlo en cuenta en tu programa.

https://ibb.co/isgYFx (https://ibb.co/isgYFx)
Título: Re:PIC16F628A Y BLUETOOTH HC06
Publicado por: Alfredo_Gutna en 23 de Febrero de 2018, 01:12:03
Muchas gracias tsk y remi04 ciertamente hice la prueba con dos letras diferentes que no esten en las palabras DISCONNECTED Y CONNECTED, y funciono con el codigo que habia probado antes, muchas gracias por su ayuda a todos  :-/  ((:-))