Libreria ultrasuoni

Dependents:   TextLCD_HelloWorld ES_4_P4

Revision:
0:f14a3481cfc3
diff -r 000000000000 -r f14a3481cfc3 HCSR04.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HCSR04.h	Mon Oct 24 12:53:49 2016 +0000
@@ -0,0 +1,83 @@
+#ifndef HCSR04_H_TVZMT
+#define HCSR04_H_TVZMT
+ 
+/** A distance measurement class using ultrasonic sensor HC-SR04.
+ *  
+ * Example of use:
+ * @code
+ * #include "mbed.h"
+ * #include "HCSR04.h"
+ *
+ * Serial pc(USBTX, USBRX);
+ *
+ * int main() {
+ *     HCSR04 sensor(p5, p7);
+ *     sensor.setRanges(10, 110);
+ *     pc.printf("Min. range = %g cm\n\rMax. range = %g cm\n\r",
+ *       sensor.getMinRange(), sensor.getMaxRange());
+ *     while(1) {
+ *         pc.printf("Distance: %5.1f mm\r", sensor.getDistance_mm());
+ *         wait_ms(500);
+ *     }
+ * }
+ * @endcode
+ */
+class HCSR04 {
+    
+    public:
+    
+    /** Receives two PinName variables.
+     * @param echoPin mbed pin to which the echo signal is connected to
+     * @param triggerPin mbed pin to which the trigger signal is connected to
+     */
+    HCSR04(PinName echoPin, PinName triggerPin);
+    
+    /** Calculates the distance in cm, with the calculation time of approximatelly 23.7 ms.
+     * @returns distance of the measuring object in cm.
+     */
+    float getDistance_cm();
+    
+    /** Calculates the distance in mm, with the calculation time of approximatelly 23.7 ms.
+     * @returns distance of the measuring object in mm.
+     */
+    float getDistance_mm();
+    
+    /** Sets the minimum and maximum ranges between the factory values of 2 cm and 400 cm.
+     *  @param minRange Minimum range in cm. Must be between 2 cm and maxRange.
+     *  @param maxRange Maximum range in cm. Must be between minRange and 400 cm.
+     */
+    void setRanges(float minRange, float maxRange);
+    
+    /** Retreives the minimum sensor range set by the user.
+     * @returns the minimum sensor range set by the user in cm.
+     */
+    float getMinRange();
+    
+    /** Retreives the maximum sensor range set by the user.
+     * @returns the maximum sensor range set by the user in cm.
+     */
+    float getMaxRange();
+    
+    private:
+    
+    InterruptIn echo;       // echo pin
+    DigitalOut trigger;     // trigger pin
+    Timer timer;            // echo pulsewidth measurement
+    float distance;         // store the distance in cm
+    float minDistance;      // minimum measurable distance
+    float maxDistance;      // maximum measurable distance
+    
+    /** Start the timer. */
+    void startTimer();
+    
+    /** Stop the timer. */
+    void stopTimer();
+    
+    /** Initialization. */
+    void init();
+    
+    /** Start the measurement. */
+    void startMeasurement();
+};
+ 
+#endif
\ No newline at end of file