Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 |
--- /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
--- /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