A program that demonstrates the development of library, using as an example an ultrasonic distance sensor HC-SR04.

Dependencies:   mbed HCSR04 AutomationElements

main.cpp

Committer:
tbjazic
Date:
2015-12-07
Revision:
5:889566fb3a85
Parent:
4:052ac3f5c938

File content as of revision 5:889566fb3a85:

#include "mbed.h"
#include "HCSR04.h"
#include "AutomationElements.h"

Serial pc(USBTX, USBRX);
HCSR04 sensor(p5, p7);
float sampleTime = 0.1;
PT1 filter(1, 2, sampleTime); // filter with a time constant of 2 seconds
float distance = 0;
float filteredDistance = 0; 
Timer timer;

int main() {
    sensor.setRanges(4, 400);
    pc.printf("Minimum sensor range = %g cm\n\rMaximum sensor range = %g cm\n\r", sensor.getMinRange(), sensor.getMaxRange());
    pc.printf("Sensor:       Filtered:\n\r");
    
    timer.start();
    distance = sensor.getDistance_mm();
    timer.stop();
    int time1 = timer.read_us();
    pc.printf("Time to get distance: %d us \n\r", time1);
    timer.reset();
    
    timer.start();
    filter.in(distance);
    filteredDistance = filter.out();
    timer.stop();
    int time2 = timer.read_us();
    pc.printf("Time to filter result: %d us \n\r", time2);
    timer.reset();
    
    timer.start();
    pc.printf("%7.1f mm  %7.1f mm  \r", distance, filteredDistance);
    timer.stop();
    int time3 = timer.read_us();
    pc.printf("Time to printf one line: %d us \n\r", time3);
    timer.reset();
    
    pc.printf("Sensor:       Filtered:\n\r");
    
    while(1) {
        distance = sensor.getDistance_mm();
        filter.in(distance);
        filteredDistance = filter.out();
        pc.printf("%7.1f mm  %7.1f mm  \r", distance, filteredDistance);
        wait_us(sampleTime*1e6 - time1 - time2 - time3);
    }
}