Autor Tema: Control de sensor ultrasonico y envio de dato por rs232  (Leído 71 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado leriokfive

  • PIC10
  • *
  • Mensajes: 2
Control de sensor ultrasonico y envio de dato por rs232
« en: 12 de Marzo de 2019, 06:26:38 »
Hola que tal amigos, tengo el siguiente problema, quiero controlar el sensor ultrasonico hc-sr04 y enviar la distancia a traves de la comunicacion serial, hice un programa sencillo para comunicar el sensor con el pic, posteriormente cree el codigo para que el dato fuera enviado por comunicacion serial, el problema que enfrento es que cuando quiero realizar esta accion, el microcontrolador parece congelarse, pues no realiza ninguna accion, intente con otro programa que solo convierte un valor analogico de tension y envia el dato por comunicacion serial y, sin problemas realiza la conversion y el envio, supuse que el problema era la frecuencia para la activacion y recepcion de la señal del sensor, podrian ayudarme a encontrar el error o alguna solucion para comunicar el sensor y enviar el dato? se los agradecere mucho, debajo dejo el codigo que implemento actualmente.

#INCLUDE <18f4550.h>
#device adc=10
#USE DELAY(CLOCK=20MHZ)
#FUSES HS,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP,CPUDIV1,PLL1
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)


float distancia, tiempo;
#USE standard_io(b)



void main()
{
     set_tris_d(0b000000);
 
    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
   while(1)
   {
     
output_high(pin_b0);
delay_us(10);                       
output_low(pin_b0);
while(!input(pin_b1))                     
{}
set_timer1(0);                         
while(input(pin_b1))                     
{}
tiempo=get_timer1();
distancia=(tiempo/2)/(29.15);
       
       
     
printf("%2.1f\r\n",distancia);

delay_ms(500);

   }
}

Desconectado Robert76

  • PIC16
  • ***
  • Mensajes: 141
Re:Control de sensor ultrasonico y envio de dato por rs232
« Respuesta #1 en: 12 de Marzo de 2019, 07:07:32 »
Hola, el primer problema que veo es que usas Whiles para esperar una acción, pero si eso no ocurre el micro quedará esperando.
Tienes que usar interrupciones para detectar cambio de estado del puerto B1.