Dependencies:   mbed

Fork of PRO1 by Kim Nielsen

Committer:
kimnielsen
Date:
Wed Nov 02 08:05:41 2016 +0000
Revision:
2:1c27a43bb9b7
Parent:
0:d3dbe632b1a9
Team5 kildekode 2-11-16

Who changed what in which revision?

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