Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of PRO1 by
HCSR04.cpp
- Committer:
- kimnielsen
- Date:
- 2016-10-31
- Revision:
- 0:d3dbe632b1a9
- Child:
- 2:1c27a43bb9b7
File content as of revision 0:d3dbe632b1a9:
#include "mbed.h" #include "HCSR04.h" HCSR04::HCSR04(PinName echoPin, PinName triggerPin) : echo(echoPin), trigger(triggerPin) { init(); } void HCSR04::init() { /** configure the rising edge to start the timer */ echo.rise(this, &HCSR04::startTimer); /** configure the falling edge to stop the timer */ echo.fall(this, &HCSR04::stopTimer); distance = -1; // initial distance minDistance = 2; maxDistance = 400; } void HCSR04::startTimer() { timer.start(); // start the timer } void HCSR04::stopTimer() { timer.stop(); // stop the timer } void HCSR04::startMeasurement() { trigger = 1; wait_us(10); trigger = 0; wait_ms(25); // just enough time to measure 400 cm timer.stop(); // just in case echo fall did not occur distance = timer.read() * 1e6 / 58; if (distance < minDistance) distance = minDistance; if (distance > maxDistance) distance = maxDistance; timer.reset(); } float HCSR04::getDistance_cm() { startMeasurement(); return distance; } float HCSR04::getDistance_mm() { startMeasurement(); return distance * 10; } void HCSR04::setRanges(float minRange, float maxRange) { if (minRange < maxRange) { if (minRange >= 2) minDistance = minRange; if (maxRange <= 400) maxDistance = maxRange; } } float HCSR04::getMinRange() { return minDistance; } float HCSR04::getMaxRange() { return maxDistance; }