Provides interface for reading distance measurements from the HCSR04 ultrasonic distance sensor.

Dependencies:   PulseManager

Committer:
aagnone3
Date:
Mon Aug 03 18:27:02 2015 +0000
Revision:
1:f76eb64003f2
Parent:
0:73ece82e5548
Initial revision.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aagnone3 0:73ece82e5548 1 #include "HCSR04.h"
aagnone3 0:73ece82e5548 2
aagnone3 0:73ece82e5548 3 HCSR04::HCSR04(PinName triggerPin, PinName echoPin, int time)
aagnone3 0:73ece82e5548 4 : timeout(time) {
aagnone3 0:73ece82e5548 5 pulseManager = new PulseManager(triggerPin, echoPin);
aagnone3 0:73ece82e5548 6 }
aagnone3 0:73ece82e5548 7
aagnone3 0:73ece82e5548 8 HCSR04::~HCSR04() {
aagnone3 0:73ece82e5548 9 delete pulseManager;
aagnone3 0:73ece82e5548 10 }
aagnone3 0:73ece82e5548 11
aagnone3 0:73ece82e5548 12 float HCSR04::getReading() {
aagnone3 0:73ece82e5548 13 // Send the trigger pulse (high signal for 8 us)
aagnone3 0:73ece82e5548 14 pulseManager->write_us(1, 6);
aagnone3 0:73ece82e5548 15
aagnone3 0:73ece82e5548 16 // Report the width of the echo pulse
aagnone3 0:73ece82e5548 17 return (float) pulseManager->read_high_us(timeout);
aagnone3 0:73ece82e5548 18 }
aagnone3 0:73ece82e5548 19
aagnone3 0:73ece82e5548 20 float HCSR04::getReadingInches() {
aagnone3 0:73ece82e5548 21 // Acquire the width of the echo pulse
aagnone3 0:73ece82e5548 22 float distance = getReading();
aagnone3 0:73ece82e5548 23
aagnone3 0:73ece82e5548 24 // Return calculated distance in cm's. or -1.0 if the measurement is bad
aagnone3 0:73ece82e5548 25 return (distance == -1.0 ? -1.0 : distance / SCALE_INCHES);
aagnone3 0:73ece82e5548 26 }
aagnone3 0:73ece82e5548 27
aagnone3 0:73ece82e5548 28 float HCSR04::getReadingCm() {
aagnone3 0:73ece82e5548 29 // Acquire the width of the echo pulse
aagnone3 0:73ece82e5548 30 float distance = getReading();
aagnone3 0:73ece82e5548 31
aagnone3 0:73ece82e5548 32 // Return calculated distance in cm's. or -1.0 if the measurement is bad
aagnone3 0:73ece82e5548 33 return (distance == -1.0 ? -1.0 : distance / SCALE_CM);
aagnone3 0:73ece82e5548 34 }