wo

Dependents:   Ultrasonic UltrasonicCasper UltrasonicCasper frdm_tsi_slider ... more

Fork of HCSR04 by Awadh Al Shukaili

Committer:
oscargrodri
Date:
Mon May 26 14:10:33 2014 +0000
Revision:
1:d388301a0227
Parent:
0:0bda99bb39a4
no change

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
oscargrodri 1:d388301a0227 10 //
aralshukaili 0:0bda99bb39a4 11
aralshukaili 0:0bda99bb39a4 12 //return echo duration in us (refer to digram above)
oscargrodri 1:d388301a0227 13 int HCSR04::echo_duration()
oscargrodri 1:d388301a0227 14 {
aralshukaili 0:0bda99bb39a4 15 timer.reset();
aralshukaili 0:0bda99bb39a4 16 trig = 0;
oscargrodri 1:d388301a0227 17 wait_us(10);
aralshukaili 0:0bda99bb39a4 18 trig = 1;
aralshukaili 0:0bda99bb39a4 19 wait_us(10);
aralshukaili 0:0bda99bb39a4 20 trig = 0;
aralshukaili 0:0bda99bb39a4 21 while(echo == 0);
aralshukaili 0:0bda99bb39a4 22 timer.start();
aralshukaili 0:0bda99bb39a4 23 while(echo == 1);
aralshukaili 0:0bda99bb39a4 24 timer.stop();
aralshukaili 0:0bda99bb39a4 25 return timer.read_us();
aralshukaili 0:0bda99bb39a4 26 }
aralshukaili 0:0bda99bb39a4 27
oscargrodri 1:d388301a0227 28 //return distance to nearest obstacle or returns -1
aralshukaili 0:0bda99bb39a4 29 //if no obstacle within range
aralshukaili 0:0bda99bb39a4 30 //set sys to cm or inch accordingly
oscargrodri 1:d388301a0227 31 int HCSR04::distance(int sys)
oscargrodri 1:d388301a0227 32 {
aralshukaili 0:0bda99bb39a4 33 duration = echo_duration();
oscargrodri 1:d388301a0227 34 distacne_cm = duration /29/2;
oscargrodri 1:d388301a0227 35 distance_inc = duration /74/2;
aralshukaili 0:0bda99bb39a4 36 if (sys)
aralshukaili 0:0bda99bb39a4 37 return distacne_cm;
aralshukaili 0:0bda99bb39a4 38 else
aralshukaili 0:0bda99bb39a4 39 return distance_inc;
aralshukaili 0:0bda99bb39a4 40 }
aralshukaili 0:0bda99bb39a4 41