Lab 3 part 3 sonaar and timer
Dependencies: mbed
Revision 0:8f4753d3b870, committed 24 months ago
- 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