Icaro Brito
/
Ultrasonico_HC-SR04
Program using a HC-SR04 Ultrasonic sensor.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /* Programa para utilização do sensor Ultrasom 00002 */ 00003 /*Interrupções de pinos,só são possíveis nas portas A e D*/ 00004 00005 #include "mbed.h" 00006 00007 Serial pc(USBTX,USBRX); //Configuração da comunicação serial para enviar o valor do sensor 00008 DigitalOut trig(PTE5,0); //Configuração do pino de Trigger 00009 InterruptIn echo(PTA16); //Configuração da interrupção por pino de Echo 00010 Timer tempo; 00011 float tdist=0, distcm=0, distin=0, dist0=0; 00012 00013 void iniP(){ //Rotina para receber o pulso inicial do pino Echo 00014 tempo.start(); //Rotina para iniciar o contador 00015 return; 00016 } 00017 00018 void finP(){ //Rotina para pegar o tempo final do pulso 00019 00020 tdist = tempo.read_us(); //Leitura do tempo transcorrido 00021 distcm = tdist/58; //Cálculo da distância detectada em "cm" 00022 distin = tdist/148; //Cálculo da distância detectada em "in" 00023 00024 tempo.stop(); //Páro o temporizador 00025 tempo.reset(); //Reset para o próximo ciclo 00026 return; 00027 } 00028 00029 00030 00031 int main(){ 00032 00033 while(1){ 00034 00035 trig=1; //Inicio do trigger 00036 wait_us(10); // 10us de pulso 00037 trig=0; //Fim do trigger 00038 00039 echo.rise(&iniP); //leitura do inicio do pulso de retorno 00040 echo.fall(&finP); //Leitura do final do pulso de retorno 00041 00042 if(distcm != dist0){ //rotina para evitar que se envie muitos valores 00043 dist0 = distcm; 00044 printf("Distancia detectada pelo sensor %.2f cm \n",distcm); 00045 } 00046 wait_ms(60); //rotina para evitar que o pulso de "trigger" seja confundido com o "echo" 00047 } 00048 00049 00050 }
Generated on Sat Jul 23 2022 06:17:08 by 1.7.2