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; }