Lab 3 part 3 sonaar and timer
Dependencies: mbed
Revision 0:8f4753d3b870, committed 2022-09-30
- Comitter:
- logostarr
- Date:
- Fri Sep 30 19:36:04 2022 +0000
- Commit message:
- stuff
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 Fri Sep 30 19:36:04 2022 +0000
@@ -0,0 +1,54 @@
+#include "mbed.h"
+
+DigitalOut trigger(p6);
+DigitalOut myled(LED1); //monitor trigger
+DigitalOut myled2(LED2); //monitor echo
+DigitalIn echo(p7);
+int distance = 0;
+int correction = 0;
+Timer sonar;
+
+int main()
+{
+ sonar.reset();
+// measure actual software polling timer delays
+// delay used later in time correction
+// start timer
+ sonar.start();
+// min software polling delay to read echo pin
+ while (echo==2) {};
+ myled2 = 0;
+// stop timer
+ sonar.stop();
+// read timer
+ correction = sonar.read_us();
+ printf("Approximate software overhead timer delay is %d uS\n\r",correction);
+
+//Loop to read Sonar distance values, scale, and print
+ while(1) {
+// trigger sonar to send a ping
+ trigger = 1;
+ myled = 1;
+ myled2 = 0;
+ sonar.reset();
+ wait_us(10.0);
+ trigger = 0;
+ myled = 0;
+//wait for echo high
+ while (echo==0) {};
+ myled2=echo;
+//echo high, so start timer
+ sonar.start();
+//wait for echo low
+ while (echo==1) {};
+//stop timer and read value
+ sonar.stop();
+//subtract software overhead timer delay and scale to cm
+ distance = (sonar.read_us()-correction)/58.0;
+ myled2 = 0;
+ printf(" %d cm \n\r",distance);
+//wait so that any echo(s) return before sending another ping
+ wait(0.2);
+ }
+}
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Sep 30 19:36:04 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file