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

Dependencies:   mbed HCSR04 AutomationElements

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