ECE 4180 Project for Spring 2020

Dependencies:   mbed mbed-rtos SDFileSystem PinDetect ESP8266NodeMCUInterface

Committer:
kimberlylie99
Date:
Fri May 01 18:43:13 2020 +0000
Revision:
1:5ae291085f75
Parent:
0:b97c07227845
Edit Main.cpp;

Who changed what in which revision?

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