Library used to implement HCSR04 Ranging Module.

Dependents:   2Project3_Robot2_Final

Fork of HCSR04 by Awadh Al Shukaili

Committer:
Jakschwa
Date:
Mon May 02 17:22:54 2016 +0000
Revision:
1:348fdd74f030
Parent:
0:0bda99bb39a4
This library was used to implement the HCSR04 ranging module used to sense distances in our Multi-Robot Security System Project in IUPUI's ECE 59500 Embedded Systems Design course.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aralshukaili 0:0bda99bb39a4 1 #include "HCSR04.h"
aralshukaili 0:0bda99bb39a4 2 #include "mbed.h"
aralshukaili 0:0bda99bb39a4 3
aralshukaili 0:0bda99bb39a4 4
aralshukaili 0:0bda99bb39a4 5 HCSR04::HCSR04(PinName t, PinName e) : trig(t), echo(e) {}
aralshukaili 0:0bda99bb39a4 6
aralshukaili 0:0bda99bb39a4 7 // Trigger Echo
aralshukaili 0:0bda99bb39a4 8 // _______ _____________,,,,,,,,,
aralshukaili 0:0bda99bb39a4 9 // ____| 10us |_________| 150us-25ms, or 38ms if no obstacle
aralshukaili 0:0bda99bb39a4 10 //
aralshukaili 0:0bda99bb39a4 11
aralshukaili 0:0bda99bb39a4 12 //return echo duration in us (refer to digram above)
aralshukaili 0:0bda99bb39a4 13 long HCSR04::echo_duration() {
aralshukaili 0:0bda99bb39a4 14 timer.reset();
aralshukaili 0:0bda99bb39a4 15 trig = 0;
aralshukaili 0:0bda99bb39a4 16 wait_us(2);
aralshukaili 0:0bda99bb39a4 17 trig = 1;
aralshukaili 0:0bda99bb39a4 18 wait_us(10);
aralshukaili 0:0bda99bb39a4 19 trig = 0;
aralshukaili 0:0bda99bb39a4 20 while(echo == 0);
aralshukaili 0:0bda99bb39a4 21 timer.start();
aralshukaili 0:0bda99bb39a4 22 while(echo == 1);
aralshukaili 0:0bda99bb39a4 23 timer.stop();
aralshukaili 0:0bda99bb39a4 24 return timer.read_us();
aralshukaili 0:0bda99bb39a4 25 }
aralshukaili 0:0bda99bb39a4 26
aralshukaili 0:0bda99bb39a4 27 //return distance to nearest obstacle or returns -1
aralshukaili 0:0bda99bb39a4 28 //if no obstacle within range
aralshukaili 0:0bda99bb39a4 29 //set sys to cm or inch accordingly
Jakschwa 1:348fdd74f030 30 long HCSR04::distance(void){
aralshukaili 0:0bda99bb39a4 31 duration = echo_duration();
aralshukaili 0:0bda99bb39a4 32 if(duration > 30000)
Jakschwa 1:348fdd74f030 33 return 1000;
aralshukaili 0:0bda99bb39a4 34 distacne_cm = duration /29 / 2 ;
aralshukaili 0:0bda99bb39a4 35 distance_inc = duration / 74 / 2;
Jakschwa 1:348fdd74f030 36 return distacne_cm;
aralshukaili 0:0bda99bb39a4 37 }
aralshukaili 0:0bda99bb39a4 38