Pois bem pessoal , sou novo aqui neste fórum e gostaria de uma ajuda para entender um código que estou utilizando para poder medir distância com um sensor ultrasônico com um microcontrolador .

bem o código é este :

#include <16F870.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 NOMCLR //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_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;


delay_ms(1000);
}
}

 Utilizo o compilador CCS e gostaria de uma ajuda para compreender o código uma vez que eu achei ele na internete e só alterei para poder fazer a leitura em um display LCD .

Fico grato desde já .

Exibições: 4544

Responder esta

Respostas a este tópico

que tranqueira de codigo é esse amigo? um sensor ultrasonico geralmente te emite um sinal de 0 a 5V, 0 a 10V ,0 a 20mA ou 4 a 20mA, o teu pic ou arduino so le tensão, entao se teu sensor for de corrente voce coloca um resitor de 250ohms e quando voce ter 20mA estara tendo no pino analogico do teu pic ou arduino uma tensao de 5V, nao entendi pq voce usou timer, nao vi no seu codigo nenhum comando para leitura analogica, outra coisa, todo sensor ultrasonico possui uma base morta, ou seja, uma distancia inicial morta aonde ele nao consegue medir, exemplo um sensor ultrasonico que mete de 0 a 6metros, e que tem 50cm de base morta, tu tem que colocar ele a 6 metros e meio da distancia maxima que queres medir, procure se informar um pouco antes de atirar para tudo que é lado, formule bem sua pergunta, e principalmente demosntre em sua pergunta que voce quer aprender e nao so pegar o negocio pronto, abraco.

Ola amigos!! alex se nao me engano ,  esses sensores ultrassonicos como do tipo SRF04 - 05, nao trabalham com analogico.. apartir de receber um pulso de gatilho do micro, ele devolve com pulso de ecos.. esses pulsos devem ser medidos dentro de um tempo para determinar a distancia..

valeu luis, me diz uma coisa, funciona bem os bixinho ou dao muito erro?

 srf04 tem Distância de detecção: 2cm-450cm centímetros. e sua precisao fica em torno de até 0.3cm

comprei 3 deses já faz uma ano, e nunca testei.... :|

em vista do preço , realizam bem seu trabalho.. gostaria q fosse a prova de umidade e poeira.. mas ai ja é outro categoria

Eu pesquisei , fiz desse jeito e deu certo , peguei o valor da variável distance e direcionei a um display LCD em outro programa , este programa que postei foi apenas para a leitura da distancia , não estou atirando para todos os lados , so gostaria humildemente pedir ajuda para interpretar este código que por sinal funciona muito bem e o meu sensor trabalha como o luis nos descreve em seu comentario , so quero interpretar o código. 

Amigo nao sou o mais indicado para te explicar, o seu codigo parece bem simples, mas se for funcional o q ha de errado? kk vou te passar um link q passa outro codigo e da uma abordada sobre a programaçao, inclusive se estas pondo em pratica o projeto, gostaria q comparasse eles e desse uma posicao p galera .espero q nao esteja indo contra as regras do site sobre o link, e se sim favor moderadores apagar.

http://translate.googleusercontent.com/translate_c?depth=1&hl=p...

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço