ECE 4180 Project for Spring 2020
Dependencies: mbed mbed-rtos SDFileSystem PinDetect ESP8266NodeMCUInterface
ultrasonic.cpp@1:5ae291085f75, 2020-05-01 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |