Provides interface for reading distance measurements from the HCSR04 ultrasonic distance sensor.
HCSR04.cpp@1:f76eb64003f2, 2015-08-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |