Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

Committer:
ciarankane123
Date:
Tue Aug 23 14:58:55 2022 +0000
Revision:
0:479e94f82332
Added ultrasonic intialising

Who changed what in which revision?

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