test of us sensor
Dependencies: HC_SR04_Ultrasonic_Library mbed
Fork of Nucleo_UltrasonicHelloWorld by
main.cpp
- Committer:
- fjwats
- Date:
- 2018-02-09
- Revision:
- 2:174ac1a5a658
- Parent:
- 1:4a5586eb1765
File content as of revision 2:174ac1a5a658:
#include "mbed.h"
DigitalOut trigger(p13);
DigitalOut myled(LED1); //monitor trigger
DigitalOut myled2(LED2); //monitor echo
DigitalOut myled3(LED3);
DigitalOut myled4(LED4);
DigitalIn echo(p14);
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);
if (distance<10) {
myled3= 1;
}
if (distance>=10) {
myled4= 1;
}
//wait so that any echo(s) return before sending another ping
wait(0.2);
myled3 = myled4 = 0;
}
}
