test of us sensor

Dependencies:   HC_SR04_Ultrasonic_Library mbed

Fork of Nucleo_UltrasonicHelloWorld by EJ Teb

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;
    }
}