Matthew Shoemaker
/
PingRangeFinder
Revision 0:504353f35956, committed 2010-01-03
- Comitter:
- mshoemaker
- Date:
- Sun Jan 03 13:11:03 2010 +0000
- Commit message:
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 504353f35956 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jan 03 13:11:03 2010 +0000 @@ -0,0 +1,61 @@ +#include "mbed.h" + +Serial pc(USBTX,USBRX); + +DigitalInOut pingPin(p18); + +Timer tmr; + +long microsecondsToInches(long microseconds); +long microsecondsToCentimeters(long microseconds); + +int main() { + while (1) { + // establish variables for duration of the ping, + // and the distance result in inches and centimeters: + long duration, inches, cm; + + // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. + // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: + pingPin.output(); + pingPin = 0; + wait_us(2); + pingPin = 1; + wait_us(5); + pingPin = 0; + + // The same pin is used to read the signal from the PING))): a HIGH + // pulse whose duration is the time (in microseconds) from the sending + // of the ping to the reception of its echo off of an object. + pingPin.input(); + + // pulseIn + while (!pingPin); // wait for high + tmr.start(); + while (pingPin); // wait for low + duration = tmr.read_us(); + + // convert the time into a distance + inches = microsecondsToInches(duration); + cm = microsecondsToCentimeters(duration); + + pc.printf("in=%4d, cm=%4d\n", inches, cm); + wait_ms(100); + } +} + +long microsecondsToInches(long microseconds) { + // According to Parallax's datasheet for the PING))), there are + // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per + // second). This gives the distance travelled by the ping, outbound + // and return, so we divide by 2 to get the distance of the obstacle. + // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf + return microseconds / 74 / 2; +} + +long microsecondsToCentimeters(long microseconds) { + // The speed of sound is 340 m/s or 29 microseconds per centimeter. + // The ping travels out and back, so to find the distance of the + // object we take half of the distance travelled. + return microseconds / 29 / 2; +} \ No newline at end of file
diff -r 000000000000 -r 504353f35956 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Jan 03 13:11:03 2010 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/49a220cc26e0