First Draft, serial print change based on distance

Committer:
liam94
Date:
Fri Feb 04 18:30:13 2022 +0000
Revision:
17:02676e9bbc73
Parent:
11:5a895d966a3e
final update to all comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liam94 11:5a895d966a3e 1 #include "ultrasonic.h"
liam94 11:5a895d966a3e 2
liam94 11:5a895d966a3e 3 ultrasonic::ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout):_trig(trigPin), _echo(echoPin)
liam94 11:5a895d966a3e 4 {
liam94 11:5a895d966a3e 5 _updateSpeed = updateSpeed;
liam94 11:5a895d966a3e 6 _timeout = timeout;
liam94 11:5a895d966a3e 7 }
liam94 11:5a895d966a3e 8
liam94 11:5a895d966a3e 9 ultrasonic::ultrasonic(PinName trigPin, PinName echoPin, float updateSpeed, float timeout, void onUpdate(int))
liam94 11:5a895d966a3e 10 :_trig(trigPin), _echo(echoPin)
liam94 11:5a895d966a3e 11 {
liam94 11:5a895d966a3e 12 _onUpdateMethod=onUpdate;
liam94 11:5a895d966a3e 13 _updateSpeed = updateSpeed;
liam94 11:5a895d966a3e 14 _timeout = timeout;
liam94 11:5a895d966a3e 15 _t.start ();
liam94 11:5a895d966a3e 16 }
liam94 11:5a895d966a3e 17 void ultrasonic::_startT()
liam94 11:5a895d966a3e 18 {
liam94 11:5a895d966a3e 19 if(_t.read()>600)
liam94 11:5a895d966a3e 20 {
liam94 11:5a895d966a3e 21 _t.reset ();
liam94 11:5a895d966a3e 22 }
liam94 11:5a895d966a3e 23 start = _t.read_us ();
liam94 11:5a895d966a3e 24 }
liam94 11:5a895d966a3e 25
liam94 11:5a895d966a3e 26 void ultrasonic::_updateDist()
liam94 11:5a895d966a3e 27 {
liam94 11:5a895d966a3e 28 end = _t.read_us ();
liam94 11:5a895d966a3e 29 done = 1;
liam94 11:5a895d966a3e 30 _distance = (end - start)/6;
liam94 11:5a895d966a3e 31 _tout.detach();
liam94 11:5a895d966a3e 32 _tout.attach(this,&ultrasonic::_startTrig, _updateSpeed);
liam94 11:5a895d966a3e 33 }
liam94 11:5a895d966a3e 34 void ultrasonic::_startTrig(void)
liam94 11:5a895d966a3e 35 {
liam94 11:5a895d966a3e 36 _tout.detach();
liam94 11:5a895d966a3e 37 _trig=1;
liam94 11:5a895d966a3e 38 wait_us(10);
liam94 11:5a895d966a3e 39 done = 0;
liam94 11:5a895d966a3e 40 _echo.rise(this,&ultrasonic::_startT);
liam94 11:5a895d966a3e 41 _echo.fall(this,&ultrasonic::_updateDist);
liam94 11:5a895d966a3e 42 _echo.enable_irq ();
liam94 11:5a895d966a3e 43 _tout.attach(this,&ultrasonic::_startTrig,_timeout);
liam94 11:5a895d966a3e 44 _trig=0;
liam94 11:5a895d966a3e 45 }
liam94 11:5a895d966a3e 46
liam94 11:5a895d966a3e 47 int ultrasonic::getCurrentDistance(void)
liam94 11:5a895d966a3e 48 {
liam94 11:5a895d966a3e 49 return _distance;
liam94 11:5a895d966a3e 50 }
liam94 11:5a895d966a3e 51 void ultrasonic::pauseUpdates(void)
liam94 11:5a895d966a3e 52 {
liam94 11:5a895d966a3e 53 _tout.detach();
liam94 11:5a895d966a3e 54 _echo.rise(NULL);
liam94 11:5a895d966a3e 55 _echo.fall(NULL);
liam94 11:5a895d966a3e 56 }
liam94 11:5a895d966a3e 57 void ultrasonic::startUpdates(void)
liam94 11:5a895d966a3e 58 {
liam94 11:5a895d966a3e 59 _startTrig();
liam94 11:5a895d966a3e 60 }
liam94 11:5a895d966a3e 61 void ultrasonic::attachOnUpdate(void method(int))
liam94 11:5a895d966a3e 62 {
liam94 11:5a895d966a3e 63 _onUpdateMethod = method;
liam94 11:5a895d966a3e 64 }
liam94 11:5a895d966a3e 65 void ultrasonic::changeUpdateSpeed(float updateSpeed)
liam94 11:5a895d966a3e 66 {
liam94 11:5a895d966a3e 67 _updateSpeed = updateSpeed;
liam94 11:5a895d966a3e 68 }
liam94 11:5a895d966a3e 69 float ultrasonic::getUpdateSpeed()
liam94 11:5a895d966a3e 70 {
liam94 11:5a895d966a3e 71 return _updateSpeed;
liam94 11:5a895d966a3e 72 }
liam94 11:5a895d966a3e 73 int ultrasonic::isUpdated(void)
liam94 11:5a895d966a3e 74 {
liam94 11:5a895d966a3e 75 //printf("%d", done);
liam94 11:5a895d966a3e 76 d=done;
liam94 11:5a895d966a3e 77 done = 0;
liam94 11:5a895d966a3e 78 return d;
liam94 11:5a895d966a3e 79 }
liam94 11:5a895d966a3e 80 void ultrasonic::checkDistance(void)
liam94 11:5a895d966a3e 81 {
liam94 11:5a895d966a3e 82 if(isUpdated())
liam94 11:5a895d966a3e 83 {
liam94 11:5a895d966a3e 84 (*_onUpdateMethod)(_distance);
liam94 11:5a895d966a3e 85 }
liam94 11:5a895d966a3e 86 }