A program that demonstrates the development of library, using as an example an ultrasonic distance sensor HC-SR04.
Dependencies: mbed HCSR04 AutomationElements
Diff: main.cpp
- Revision:
- 5:889566fb3a85
- Parent:
- 4:052ac3f5c938
--- a/main.cpp Mon Dec 07 10:44:07 2015 +0000 +++ b/main.cpp Mon Dec 07 11:45:44 2015 +0000 @@ -5,28 +5,45 @@ Serial pc(USBTX, USBRX); HCSR04 sensor(p5, p7); float sampleTime = 0.1; -PT1 filter(1, 2, sampleTime); -Ticker ticker; -float distance; -float filteredDistance; -DigitalOut led1(LED1); +PT1 filter(1, 2, sampleTime); // filter with a time constant of 2 seconds +float distance = 0; +float filteredDistance = 0; +Timer timer; -void calc() { - led1 = 1; +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); - led1 = 0; -} - -int main() { - sensor.setRanges(10, 110); - pc.printf("Minimum sensor range = %g cm\n\rMaximum sensor range = %g cm\n\r", sensor.getMinRange(), sensor.getMaxRange()); + 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"); - ticker.attach(&calc, sampleTime); while(1) { - wait_ms(500); + 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); } } \ No newline at end of file