Kim Nielsen
/
Team5_kode
Fork of PRO1 by
HCSR04.h@2:1c27a43bb9b7, 2016-11-02 (annotated)
- 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?
User | Revision | Line number | New 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 |