Ir ao conteúdo
  • Cadastre-se

Sensor ultrassônico PIC18F4550


Posts recomendados

Boa noite.

 

Estou fazendo um robozinho e vou utilizar sensores ultrassônicos,eu fiz o código no compile CCS e gostaria se alguém verificasse se existe erro.

 

#include <18F4550.h>
#device ADC=10;
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV2,VREGEN
#use delay(clock=48000000)
 
#define trisa 0b00000000         // Configurado para saida
#define trisb 0b00000000         // tris utilizado pelo LCD
#define trisc 0b11111111
#define trisd 0b00000000

 

int16 time;
float distance;

#define trig pin_D1
#define echo pin_C0

void main()
{
delay_ms(1000);

setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);

while(true)
{
output_high(trig);
delay_us(10);
output_low(trig);

while(!input(ECHO))
{}

set_timer1(0);

while(input(ECHO))
{}

time=get_timer1();

distance=time*0.017;

if (distance < 4)
{
//
}

if (distance > 4)
{
//
}

delay_ms(1000);
}
}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo. Sorry minha falta de afinidade com este compilador e nunca mexi com ultrasom mas uma analise superficial e acho que isso não deve dar muito certo. você manda um pulso de 10uS - um tic - e espera receber de volta e mede o tempo, é isso? este tic tem "volume" alto? seu sensor foi projetado pra isso, ignorando ruídos? Publique o datasheet dele e o seu circuito.

Mas algo me diz que você acha tudo mastigado na net. Sugiro não querer reinventar a roda.

abç

Link para o comentário
Compartilhar em outros sites

Nosso amigo Mateus ja postou um codigo exemplo cara.

 

segue abaixo:

 

 

 
#include <16F628A.h>
 
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
 
#use delay(clock=4000000)
 
int16 time;
float distance;
 
#define trig pin_B1   
#define echo pin_B0
 
void main()
{  
   delay_ms(1000);
 
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
 
   while(true)
   {  
      output_high(trig);
      delay_us(20);
      output_low(trig);
      
      while(!input(ECHO))
      {}
      
      set_timer1(0);
      
      while(input(ECHO))
      {}
      
      time=get_timer1();
      
      distance =(time*340)/2.0 ;
      
      delay_ms(1000);
   }
}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...