![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Resit Target Localisation Ciaran Kane 18689005
Dependencies: mbed
Diff: Ultrasonic/ultrasonic.h
- 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