![](/media/cache/profiles/294aaff60deaa8b454a370d5952ed8ef.jpg.50x50_q85.jpg)
Program using a HC-SR04 Ultrasonic sensor.
Fork of Ultrasonico_HC-SR04 by
Just a translation to english, used for Youth club of electronic in Roznov
Diff: main.cpp
- Revision:
- 0:34f7d9ef2f4b
- Child:
- 1:ad8ec262e808
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 12 17:53:57 2014 +0000 @@ -0,0 +1,50 @@ +/* Programa para utilização do sensor Ultrasom +*/ +/*Interrupções de pinos,só são possíveis nas portas A e D*/ + +#include "mbed.h" + + Serial pc(USBTX,USBRX); //Configuração da comunicação serial para enviar o valor do sensor + DigitalOut trig(PTE5,0); //Configuração do pino de Trigger + InterruptIn echo(PTA16); //Configuração da interrupção por pino de Echo + Timer tempo; + float tdist=0, distcm=0, distin=0, dist0=0; + + void iniP(){ //Rotina para receber o pulso inicial do pino Echo + tempo.start(); //Rotina para iniciar o contador + return; + } + + void finP(){ //Rotina para pegar o tempo final do pulso + + tdist = tempo.read_us(); //Leitura do tempo transcorrido + distcm = tdist/58; //Cálculo da distância detectada em "cm" + distin = tdist/148; //Cálculo da distância detectada em "in" + + tempo.stop(); //Páro o temporizador + tempo.reset(); //Reset para o próximo ciclo + return; + } + + + + int main(){ + + while(1){ + + trig=1; //Inicio do trigger + wait_us(10); // 10us de pulso + trig=0; //Fim do trigger + + echo.rise(&iniP); //leitura do inicio do pulso de retorno + echo.fall(&finP); //Leitura do final do pulso de retorno + + if(distcm != dist0){ //rotina para evitar que se envie muitos valores + dist0 = distcm; + printf("Distancia detectada pelo sensor %.2f cm \n",distcm); + } + wait_ms(60); //rotina para evitar que o pulso de "trigger" seja confundido com o "echo" + } + + + } \ No newline at end of file