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