test

Fork of HCSR04 by TVZ Mechatronics Team

Committer:
tbjazic
Date:
Sun Dec 06 15:13:54 2015 +0000
Revision:
3:9a7899cf5e3a
Parent:
2:aa59a9c531be
Child:
4:aae70f15357f
Limited distance range added.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tbjazic 0:8871082486ac 1 #ifndef HCSR04_H_TVZMT
tbjazic 0:8871082486ac 2 #define HCSR04_H_TVZMT
tbjazic 0:8871082486ac 3
tbjazic 0:8871082486ac 4 /** A distance measurement class using ultrasonic sensor HC-SR04.
tbjazic 0:8871082486ac 5 *
tbjazic 0:8871082486ac 6 * Example of use:
tbjazic 2:aa59a9c531be 7 * @code
tbjazic 0:8871082486ac 8 * #include "mbed.h"
tbjazic 0:8871082486ac 9 * #include "HCSR04.h"
tbjazic 0:8871082486ac 10 *
tbjazic 0:8871082486ac 11 * Serial pc(USBTX, USBRX); // communication with terminal
tbjazic 0:8871082486ac 12 *
tbjazic 0:8871082486ac 13 * int main() {
tbjazic 0:8871082486ac 14 * HCSR04 sensor(p5, p7); // instantiate the sensor object
tbjazic 0:8871082486ac 15 * while(1) {
tbjazic 0:8871082486ac 16 * pc.printf("Distance: %5.1f cm\r", sensor.getDistance_cm());
tbjazic 0:8871082486ac 17 * wait_ms(975); // print the result every 1 second
tbjazic 0:8871082486ac 18 * }
tbjazic 0:8871082486ac 19 * }
tbjazic 2:aa59a9c531be 20 * @endcode
tbjazic 0:8871082486ac 21 */
tbjazic 0:8871082486ac 22 class HCSR04 {
tbjazic 0:8871082486ac 23
tbjazic 0:8871082486ac 24 public:
tbjazic 0:8871082486ac 25
tbjazic 0:8871082486ac 26 /** Receives two PinName variables.
tbjazic 0:8871082486ac 27 * @param echoPin mbed pin to which the echo signal is connected to
tbjazic 0:8871082486ac 28 * @param triggerPin mbed pin to which the trigger signal is connected to
tbjazic 0:8871082486ac 29 */
tbjazic 0:8871082486ac 30 HCSR04(PinName echoPin, PinName triggerPin);
tbjazic 0:8871082486ac 31
tbjazic 0:8871082486ac 32 /** Calculates the distance in cm, with the calculation time of 25 ms.
tbjazic 0:8871082486ac 33 * @returns distance of the measuring object in cm.
tbjazic 0:8871082486ac 34 */
tbjazic 0:8871082486ac 35 float getDistance_cm();
tbjazic 0:8871082486ac 36
tbjazic 0:8871082486ac 37 private:
tbjazic 0:8871082486ac 38
tbjazic 0:8871082486ac 39 InterruptIn echo; // echo pin
tbjazic 0:8871082486ac 40 DigitalOut trigger; // trigger pin
tbjazic 0:8871082486ac 41 Timer timer; // echo pulsewidth measurement
tbjazic 0:8871082486ac 42 float distance; // store the distance in cm
tbjazic 3:9a7899cf5e3a 43 float minDistance; // minimum measurable distance
tbjazic 3:9a7899cf5e3a 44 float maxDistance; // maximum measurable distance
tbjazic 0:8871082486ac 45
tbjazic 0:8871082486ac 46 /** Start the timer. */
tbjazic 0:8871082486ac 47 void startTimer();
tbjazic 0:8871082486ac 48
tbjazic 0:8871082486ac 49 /** Stop the timer. */
tbjazic 0:8871082486ac 50 void stopTimer();
tbjazic 0:8871082486ac 51
tbjazic 0:8871082486ac 52 /** Initialization. */
tbjazic 0:8871082486ac 53 void init();
tbjazic 0:8871082486ac 54
tbjazic 0:8871082486ac 55 /** Start the measurement. */
tbjazic 0:8871082486ac 56 void startMeasurement();
tbjazic 0:8871082486ac 57 };
tbjazic 0:8871082486ac 58
tbjazic 0:8871082486ac 59 #endif