![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
First Draft, serial print change based on distance
Diff: Ultrasonic/ultrasonic.h
- Revision:
- 11:5a895d966a3e
- Child:
- 12:b562893a1445
diff -r be53044119d1 -r 5a895d966a3e Ultrasonic/ultrasonic.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Ultrasonic/ultrasonic.h Thu Feb 03 17:43:32 2022 +0000 @@ -0,0 +1,47 @@ +#ifndef ULTRASONIC_H +#define ULTRASONIC_H + +#include "mbed.h" + +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