Leong Kum Loong (NYP) / HCSR04

Dependents:   Utrasonic_Example

HCSR04.cpp

Committer:
reesey
Date:
2017-12-04
Revision:
2:c9ffa237213b
Parent:
1:27ee973552a9

File content as of revision 2:c9ffa237213b:

#include "mbed.h"
#include "HCSR04.h"
/*
    HCSR04.h
    Written by Leong Kum Loong.
    04 Dec 2017, REV. 0
    
    All routines and functions in this library are written by me solely.
    Library for HC-SR04 Ultrasonic Ranging sensor.
    Library uses pins p21 to send pulse to sensor Trigger input & p22 to read sensor Echo output.
    This is assuming velocity of sound rate from ultrasonic pulse is 340m/s.
*/

DigitalOut trig(p21);
DigitalIn echo(p22);
Timer echoTime;
Ticker interval;

float distance = 0;

float divisor;

static void findDistance(){
    trig = 1;
    wait_ms(10);
    trig = 0;
    wait_ms(20);
    
    trig = 1;
    wait_us(10);
    trig = 0;
    
    while(!echo);
    echoTime.start();
    while(echo);
    echoTime.stop();
    
    distance = (float)echoTime.read_us()/(float)2 * 0.034 / (float)divisor;
    echoTime.reset();
}

//Start monitoring distance.
void getDistance(int unit){
    switch(unit){
    case 1:
        divisor = 1;        //Default divisor to get CM.
        break;
    case 2:
        divisor = 2.54;     //Divisor to get INCH.
        break;    
    }

    interval.attach(findDistance, 0.05);
}

//Retrieve distance stored.
float readDistance(){
    return distance;    
}