Program using a HC-SR04 Ultrasonic sensor.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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     }