Library for US-015 (or HC-SR04) Ultrasonic Module Distance Measuring Sensors
US-015.cpp
- Committer:
- igbt6
- Date:
- 2016-01-13
- Revision:
- 0:7163b97ee5f1
File content as of revision 0:7163b97ee5f1:
#include "US-015.h" US015::US015(PinName triggerPin, PinName echoPin, uint32_t timeout):trigger(triggerPin),echoIn(echoPin),timeoutValue(timeout) { echoIn.rise(this, &US015::startMeasureCallback); echoIn.fall(this, &US015::stopMeasureCallback); timerCtrl = new TimeController(); measurementRunning=false; measuremntFinishedCallback= NULL; } int US015::convertMaxDistanceToMaxTimeout(int maxDistHandledBySensorInCm){ return (maxDistHandledBySensorInCm) / (float)((SPEED_OF_SOUND)/10000)/2; } void US015::setFinishCallback(void (*finishCallback)(int resultValue)) { measuremntFinishedCallback= finishCallback; } bool US015::doMeasurement(void) { if(isMeasurementRuning()) return false; timerCtrl->startTime=0; trigger.write(1); //triggerPin wait_us(30); trigger.write(0); measurementRunning=true; return true; } bool US015::isMeasurementRuning() { return measurementRunning; } int US015::convertTimeToDistanceValue_mm(int timeUs) { return ((timeUs) * (float)((SPEED_OF_SOUND)/1000))/2; //(0.343mm/us) } int US015::convertTimeToDistanceValue_cm(int timeUs) { return ((timeUs) *(float)((SPEED_OF_SOUND)/10000))/2; //(0.034cm/us) } int US015::getTimePassedValue(void) { return timerCtrl->timer.read_us()-timerCtrl->startTime; } int US015::getTimeoutValue(void) { return timeoutValue; } void US015::resetMeasuremnt(void) { timerCtrl->timer.reset(); measurementRunning=false; } //private methods void US015::startMeasureCallback(void) { timerCtrl->timer.start(); timerCtrl->startTime= timerCtrl->timer.read_us(); } void US015::stopMeasureCallback(void) { timerCtrl->difTime= timerCtrl->timer.read_us()-timerCtrl->startTime; resetMeasuremnt(); if(measuremntFinishedCallback!=NULL) { (*measuremntFinishedCallback)(convertTimeToDistanceValue_mm(timerCtrl->difTime)); //for default } }