![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
First Draft, serial print change based on distance
Ultrasonic/ultrasonic.h
- Committer:
- liam94
- Date:
- 2022-02-03
- Revision:
- 12:b562893a1445
- Parent:
- 11:5a895d966a3e
File content as of revision 12:b562893a1445:
#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