dillerdasker

Dependents:   RoboticHackathon RoboticHackathon2 RoboticHackathonFINAL

HCSR04.cpp

Committer:
iLyngklip
Date:
2014-04-05
Revision:
1:d9083ad270f5
Parent:
0:506625fdcd0e

File content as of revision 1:d9083ad270f5:

#include "HCSR04.h"
#include "mbed.h"


HCSR04::HCSR04(PinName t, PinName e, PinName t2, PinName e2) : trig(t), echo(e), trig2(t2), echo2(e2) {}
 

//      Trigger          Echo
//      _______           _____________,,,,,,,,,
// ____|  10us |_________| 150us-25ms, or 38ms if no obstacle
// 

//return echo duration in us (refer to digram above)
long HCSR04::echo_duration() {
    timer.reset();
    trig = 0;
    wait_us(2);
    trig = 1;
    wait_us(10);
    trig = 0;
    while(echo == 0);
    timer.start();
    while(echo == 1){
        if(timer.read_us() > 100000)
        return -1;
        }
    timer.stop();
    
    return timer.read_us();
}
long HCSR04::Echo_duration() {
    timer.reset();
    trig2 = 0;
    wait_us(2);
    trig2 = 1;
    wait_us(10);
    trig2 = 0;
    while(echo2 == 0);
    timer.start();
    while(echo2 == 1){
        if(timer.read_us() > 100000)
        return -1;
        }
    timer.stop();
    
    return timer.read_us();
}

//return distance to nearest obstacle or returns -1 
//if no obstacle within range
//set sys to cm or inch accordingly
long HCSR04::Distance(int sys){
    duration = Echo_duration();
    if(duration > 30000)
        return -1;
    distacne_cm = duration /29 / 2 ;
    distance_inc = duration / 74 / 2;
    if (sys)
        return distacne_cm;
    else
        return distance_inc;
        }
        
long HCSR04::distance(int sys){
    duration = echo_duration();
    if(duration > 30000)
        return -1;
    distacne_cm = duration /29 / 2 ;
    distance_inc = duration / 74 / 2;
    if (sys)
        return distacne_cm;
    else
        return distance_inc;
}