Kildekode

Dependencies:   mbed

Fork of PRO1 by Kim Nielsen

Committer:
kimnielsen
Date:
Mon Oct 31 09:57:07 2016 +0000
Revision:
0:d3dbe632b1a9
Child:
2:1c27a43bb9b7
Hej

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kimnielsen 0:d3dbe632b1a9 1 #ifndef HCSR04_H_TVZMT
kimnielsen 0:d3dbe632b1a9 2 #define HCSR04_H_TVZMT
kimnielsen 0:d3dbe632b1a9 3
kimnielsen 0:d3dbe632b1a9 4 /** A distance measurement class using ultrasonic sensor HC-SR04.
kimnielsen 0:d3dbe632b1a9 5 *
kimnielsen 0:d3dbe632b1a9 6 * Example of use:
kimnielsen 0:d3dbe632b1a9 7 * @code
kimnielsen 0:d3dbe632b1a9 8 * #include "mbed.h"
kimnielsen 0:d3dbe632b1a9 9 * #include "HCSR04.h"
kimnielsen 0:d3dbe632b1a9 10 *
kimnielsen 0:d3dbe632b1a9 11 * Serial pc(USBTX, USBRX);
kimnielsen 0:d3dbe632b1a9 12 *
kimnielsen 0:d3dbe632b1a9 13 * int main() {
kimnielsen 0:d3dbe632b1a9 14 * HCSR04 sensor(p5, p7);
kimnielsen 0:d3dbe632b1a9 15 * sensor.setRanges(10, 110);
kimnielsen 0:d3dbe632b1a9 16 * pc.printf("Min. range = %g cm\n\rMax. range = %g cm\n\r",
kimnielsen 0:d3dbe632b1a9 17 * sensor.getMinRange(), sensor.getMaxRange());
kimnielsen 0:d3dbe632b1a9 18 * while(1) {
kimnielsen 0:d3dbe632b1a9 19 * pc.printf("Distance: %5.1f mm\r", sensor.getDistance_mm());
kimnielsen 0:d3dbe632b1a9 20 * wait_ms(500);
kimnielsen 0:d3dbe632b1a9 21 * }
kimnielsen 0:d3dbe632b1a9 22 * }
kimnielsen 0:d3dbe632b1a9 23 * @endcode
kimnielsen 0:d3dbe632b1a9 24 */
kimnielsen 0:d3dbe632b1a9 25 class HCSR04 {
kimnielsen 0:d3dbe632b1a9 26
kimnielsen 0:d3dbe632b1a9 27 public:
kimnielsen 0:d3dbe632b1a9 28
kimnielsen 0:d3dbe632b1a9 29 /** Receives two PinName variables.
kimnielsen 0:d3dbe632b1a9 30 * @param echoPin mbed pin to which the echo signal is connected to
kimnielsen 0:d3dbe632b1a9 31 * @param triggerPin mbed pin to which the trigger signal is connected to
kimnielsen 0:d3dbe632b1a9 32 */
kimnielsen 0:d3dbe632b1a9 33 HCSR04(PinName echoPin, PinName triggerPin);
kimnielsen 0:d3dbe632b1a9 34
kimnielsen 0:d3dbe632b1a9 35 /** Calculates the distance in cm, with the calculation time of approximatelly 23.7 ms.
kimnielsen 0:d3dbe632b1a9 36 * @returns distance of the measuring object in cm.
kimnielsen 0:d3dbe632b1a9 37 */
kimnielsen 0:d3dbe632b1a9 38 float getDistance_cm();
kimnielsen 0:d3dbe632b1a9 39
kimnielsen 0:d3dbe632b1a9 40 /** Calculates the distance in mm, with the calculation time of approximatelly 23.7 ms.
kimnielsen 0:d3dbe632b1a9 41 * @returns distance of the measuring object in mm.
kimnielsen 0:d3dbe632b1a9 42 */
kimnielsen 0:d3dbe632b1a9 43 float getDistance_mm();
kimnielsen 0:d3dbe632b1a9 44
kimnielsen 0:d3dbe632b1a9 45 /** Sets the minimum and maximum ranges between the factory values of 2 cm and 400 cm.
kimnielsen 0:d3dbe632b1a9 46 * @param minRange Minimum range in cm. Must be between 2 cm and maxRange.
kimnielsen 0:d3dbe632b1a9 47 * @param maxRange Maximum range in cm. Must be between minRange and 400 cm.
kimnielsen 0:d3dbe632b1a9 48 */
kimnielsen 0:d3dbe632b1a9 49 void setRanges(float minRange, float maxRange);
kimnielsen 0:d3dbe632b1a9 50
kimnielsen 0:d3dbe632b1a9 51 /** Retreives the minimum sensor range set by the user.
kimnielsen 0:d3dbe632b1a9 52 * @returns the minimum sensor range set by the user in cm.
kimnielsen 0:d3dbe632b1a9 53 */
kimnielsen 0:d3dbe632b1a9 54 float getMinRange();
kimnielsen 0:d3dbe632b1a9 55
kimnielsen 0:d3dbe632b1a9 56 /** Retreives the maximum sensor range set by the user.
kimnielsen 0:d3dbe632b1a9 57 * @returns the maximum sensor range set by the user in cm.
kimnielsen 0:d3dbe632b1a9 58 */
kimnielsen 0:d3dbe632b1a9 59 float getMaxRange();
kimnielsen 0:d3dbe632b1a9 60
kimnielsen 0:d3dbe632b1a9 61 private:
kimnielsen 0:d3dbe632b1a9 62
kimnielsen 0:d3dbe632b1a9 63 InterruptIn echo; // echo pin
kimnielsen 0:d3dbe632b1a9 64 DigitalOut trigger; // trigger pin
kimnielsen 0:d3dbe632b1a9 65 Timer timer; // echo pulsewidth measurement
kimnielsen 0:d3dbe632b1a9 66 float distance; // store the distance in cm
kimnielsen 0:d3dbe632b1a9 67 float minDistance; // minimum measurable distance
kimnielsen 0:d3dbe632b1a9 68 float maxDistance; // maximum measurable distance
kimnielsen 0:d3dbe632b1a9 69
kimnielsen 0:d3dbe632b1a9 70 /** Start the timer. */
kimnielsen 0:d3dbe632b1a9 71 void startTimer();
kimnielsen 0:d3dbe632b1a9 72
kimnielsen 0:d3dbe632b1a9 73 /** Stop the timer. */
kimnielsen 0:d3dbe632b1a9 74 void stopTimer();
kimnielsen 0:d3dbe632b1a9 75
kimnielsen 0:d3dbe632b1a9 76 /** Initialization. */
kimnielsen 0:d3dbe632b1a9 77 void init();
kimnielsen 0:d3dbe632b1a9 78
kimnielsen 0:d3dbe632b1a9 79 /** Start the measurement. */
kimnielsen 0:d3dbe632b1a9 80 void startMeasurement();
kimnielsen 0:d3dbe632b1a9 81 };
kimnielsen 0:d3dbe632b1a9 82
kimnielsen 0:d3dbe632b1a9 83 #endif