Library for using HC-SR04 with some API Documentation added

Fork of HC_SR04_Ultrasonic_Library by EJ Teb

Committer:
knotbeer
Date:
Thu Apr 28 02:37:52 2016 +0000
Revision:
5:182e800b81f0
Parent:
2:cc1143d36567
Child:
6:c0f8b860f55d
Documentation updates;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ejteb 0:6aa04a8c8d4c 1 #ifndef MBED_ULTRASONIC_H
ejteb 0:6aa04a8c8d4c 2 #define MBED_ULTRASONIC_H
ejteb 0:6aa04a8c8d4c 3
ejteb 0:6aa04a8c8d4c 4 #include "mbed.h"
ejteb 0:6aa04a8c8d4c 5
knotbeer 5:182e800b81f0 6 /** ultrasonic class.
knotbeer 5:182e800b81f0 7 * Used for HC-SR04 ultrasonic range sensor
knotbeer 5:182e800b81f0 8 *
knotbeer 5:182e800b81f0 9 * Example:
knotbeer 5:182e800b81f0 10 * @code
knotbeer 5:182e800b81f0 11 * #include "mbed.h"
knotbeer 5:182e800b81f0 12 * #include "ultrasonic.h"
knotbeer 5:182e800b81f0 13 *
knotbeer 5:182e800b81f0 14 * ultrasonic usensor(PA_6, PA_7, 0.1, 0.25, &dist);
knotbeer 5:182e800b81f0 15 *
knotbeer 5:182e800b81f0 16 * int main() {
knotbeer 5:182e800b81f0 17 * //start mesuring the distance
knotbeer 5:182e800b81f0 18 * usensor.startUpdates();
knotbeer 5:182e800b81f0 19 * while(1){
knotbeer 5:182e800b81f0 20 * usensor.checkDistance();
knotbeer 5:182e800b81f0 21 * }
knotbeer 5:182e800b81f0 22 * }
knotbeer 5:182e800b81f0 23 * @endcode
knotbeer 5:182e800b81f0 24 */
ejteb 0:6aa04a8c8d4c 25 class ultrasonic
ejteb 0:6aa04a8c8d4c 26 {
knotbeer 5:182e800b81f0 27 public:
knotbeer 5:182e800b81f0 28 /**iniates the class with the specified trigger pin, echo pin, update speed and timeout
knotbeer 5:182e800b81f0 29 * @param trigPin The "trigger" pin for the ultrasonic sensor. This is DigitalOut.
knotbeer 5:182e800b81f0 30 * @param echoPin The "echo" pin for the ultrasonic sensor. This is InterruptIn.
knotbeer 5:182e800b81f0 31 * @param updateSpeed How often the ultrasonic sensor pings and listens for a response.
knotbeer 5:182e800b81f0 32 * @param timeout How long to wait before giving up on listening for a ping.
knotbeer 5:182e800b81f0 33 **/
knotbeer 5:182e800b81f0 34 ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout);
knotbeer 5:182e800b81f0 35 /**iniates the class with the specified trigger pin, echo pin, update speed, timeout and method to call when the distance changes
knotbeer 5:182e800b81f0 36 * @param trigPin The "trigger" pin for the ultrasonic sensor. This is DigitalOut.
knotbeer 5:182e800b81f0 37 * @param echoPin The "echo" pin for the ultrasonic sensor. This is InterruptIn.
knotbeer 5:182e800b81f0 38 * @param updateSpeed How often the ultrasonic sensor pings and listens for a response.
knotbeer 5:182e800b81f0 39 * @param timeout How long to wait before giving up on listening for a ping.
knotbeer 5:182e800b81f0 40 * @param onUpdate(int) The function to be called when the distance is detected to have changed.
knotbeer 5:182e800b81f0 41 **/
knotbeer 5:182e800b81f0 42 ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout, void onUpdate(int));
knotbeer 5:182e800b81f0 43 /** returns the last measured distance**/
knotbeer 5:182e800b81f0 44 int getCurrentDistance(void);
knotbeer 5:182e800b81f0 45 /**pauses measuring the distance**/
knotbeer 5:182e800b81f0 46 void pauseUpdates(void);
knotbeer 5:182e800b81f0 47 /**starts mesuring the distance**/
knotbeer 5:182e800b81f0 48 void startUpdates(void);
knotbeer 5:182e800b81f0 49 /**attachs the method to be called when the distances changes
knotbeer 5:182e800b81f0 50 * @param method(int) The function to be called when the distance is detected to have changed.
knotbeer 5:182e800b81f0 51 */
knotbeer 5:182e800b81f0 52 void attachOnUpdate(void method(int));
knotbeer 5:182e800b81f0 53 /**
knotbeer 5:182e800b81f0 54 * Method:
knotbeer 5:182e800b81f0 55 * changes the speed at which updates are made
knotbeer 5:182e800b81f0 56 * @param updateSpeed how often to update the ultrasonic sensor
knotbeer 5:182e800b81f0 57 **/
knotbeer 5:182e800b81f0 58 void changeUpdateSpeed(float updateSpeed);
knotbeer 5:182e800b81f0 59 /**gets whether the distance has been changed since the last call of isUpdated() or checkDistance()**/
knotbeer 5:182e800b81f0 60 int isUpdated(void);
knotbeer 5:182e800b81f0 61 /**gets the speed at which updates are made**/
knotbeer 5:182e800b81f0 62 float getUpdateSpeed(void);
knotbeer 5:182e800b81f0 63 /**call this as often as possible in your code, eg. at the end of a while(1) loop,
knotbeer 5:182e800b81f0 64 and it will check whether the method you have attached needs to be called**/
knotbeer 5:182e800b81f0 65 void checkDistance(void);
knotbeer 5:182e800b81f0 66 private:
knotbeer 5:182e800b81f0 67 DigitalOut _trig;
knotbeer 5:182e800b81f0 68 InterruptIn _echo;
knotbeer 5:182e800b81f0 69 Timer _t;
knotbeer 5:182e800b81f0 70 Timeout _tout;
knotbeer 5:182e800b81f0 71 int _distance;
knotbeer 5:182e800b81f0 72 float _updateSpeed;
knotbeer 5:182e800b81f0 73 int start;
knotbeer 5:182e800b81f0 74 int end;
knotbeer 5:182e800b81f0 75 volatile int done;
knotbeer 5:182e800b81f0 76 void (*_onUpdateMethod)(int);
knotbeer 5:182e800b81f0 77 void _startT(void);
knotbeer 5:182e800b81f0 78 void _updateDist(void);
knotbeer 5:182e800b81f0 79 void _startTrig(void);
knotbeer 5:182e800b81f0 80 float _timeout;
knotbeer 5:182e800b81f0 81 int d;
ejteb 0:6aa04a8c8d4c 82 };
ejteb 0:6aa04a8c8d4c 83 #endif