Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

Revision:
0:479e94f82332
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Ultrasonic/ultrasonic.h	Tue Aug 23 14:58:55 2022 +0000
@@ -0,0 +1,84 @@
+#ifndef ULTRASONIC_H
+#define ULTRASONIC_H
+
+#include "mbed.h"
+
+/** Ultrasonic Class
+@brief Acknowledgements to EJ Teb
+@brief  Library for interfacing with ultrasonic sensor
+
+
+Example:
+
+@code
+
+#include "mbed.h"
+#include "ultrasonic.h"
+
+ void dist(int distance)
+{
+    printf("Distance changed to %dmm\r\n", distance);
+
+    }
+
+
+ultrasonic mu(PTD0, PTC12, .1, 1, &dist);    //Set the trigger pin to PTD0 and the echo pin to PTC12
+                                        //have updates every .1 seconds and a timeout after 1
+                                        //second, and call dist when the distance changes
+
+int main()
+{
+    mu.startUpdates();//start mesuring the distance
+    while(1)
+    {
+        //Do something else here
+        mu.checkDistance();     //call checkDistance() as much as possible, as this is where
+                                //the class checks if dist needs to be called.
+    }
+}
+
+
+* @endcode
+*/
+class ultrasonic
+{
+    public:
+        /**iniates the class with the specified trigger pin, echo pin, update speed and timeout**/
+        ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout);
+        /**iniates the class with the specified trigger pin, echo pin, update speed, timeout and method to call when the distance changes**/
+        ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout, void onUpdate(int));
+        /** returns the last measured distance**/
+        int getCurrentDistance(void);
+        /**pauses measuring the distance**/
+        void pauseUpdates(void);
+        /**starts mesuring the distance**/
+        void startUpdates(void);
+        /**attachs the method to be called when the distances changes**/
+        void attachOnUpdate(void method(int));
+        /**changes the speed at which updates are made**/
+        void changeUpdateSpeed(float updateSpeed);
+        /**gets whether the distance has been changed since the last call of isUpdated() or checkDistance()**/
+        int isUpdated(void);
+        /**gets the speed at which updates are made**/
+        float getUpdateSpeed(void);
+        /**call this as often as possible in your code, eg. at the end of a while(1) loop,
+        and it will check whether the method you have attached needs to be called**/
+        void checkDistance(void);
+    private:
+        DigitalOut _trig;
+        InterruptIn _echo;
+        Timer _t;
+        Timeout _tout;
+        int _distance;
+        float _updateSpeed;
+        int start;
+        int end;
+        volatile int done;
+        void (*_onUpdateMethod)(int);
+        void _startT(void);
+        void _updateDist(void);
+        void _startTrig(void);
+        float _timeout;
+        int d;
+};
+#endif
\ No newline at end of file