Library for controlling ultrasonic ranging module HCSR04 Ported by hiawoood from arduino library orgininally created by ITead studio.
Dependents: Ultrasonic test ZMOTO42 catchCats ... more
Revision 0:0bda99bb39a4, committed 2011-10-18
- Comitter:
- aralshukaili
- Date:
- Tue Oct 18 14:32:12 2011 +0000
- Commit message:
- 1.0
Changed in this revision
HCSR04.cpp | Show annotated file Show diff for this revision Revisions of this file |
HCSR04.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 0bda99bb39a4 HCSR04.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HCSR04.cpp Tue Oct 18 14:32:12 2011 +0000 @@ -0,0 +1,41 @@ +#include "HCSR04.h" +#include "mbed.h" + + +HCSR04::HCSR04(PinName t, PinName e) : trig(t), echo(e) {} + +// 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); + 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; +} +
diff -r 000000000000 -r 0bda99bb39a4 HCSR04.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HCSR04.h Tue Oct 18 14:32:12 2011 +0000 @@ -0,0 +1,39 @@ +//Library for controlling ultrasonic module HCSR04 +//Ported by hiawoood from arduino library orgininally created by ITead studio. +//Instantiate object by supplying the proper pin numbers of "trigger" and "echo" +//e.g. +/* + int main() { + Ultrasonic sensor(p5, p6); + while(1){ + long distance = sensor.distance(CM); + printf("Distance:%d\n"); + wait(0.1); + } + } +*/ + + + +#ifndef HCSR04_H +#define HCSR04_H + +#include "mbed.h" + +#define CM 1 +#define INC 0 + +class HCSR04 { + public: + HCSR04(PinName t, PinName e); + long echo_duration(); + long distance(int sys); + + private: + DigitalOut trig; + DigitalIn echo; + Timer timer; + long duration,distacne_cm,distance_inc; +}; + +#endif \ No newline at end of file