Final Project로 실제 점검에 사용된 코드

Dependencies:   mbed Adafruit_GFX

Committer:
21400688
Date:
Sat Jun 15 20:52:15 2019 +0000
Revision:
0:22391cd705e2
vb

Who changed what in which revision?

UserRevisionLine numberNew contents of line
21400688 0:22391cd705e2 1 #include "Ultrasonic.h"
21400688 0:22391cd705e2 2
21400688 0:22391cd705e2 3 Ultrasonic::Ultrasonic(PinName trigPin, PinName echoPin, float tick, bool repeat)
21400688 0:22391cd705e2 4 : _trig(trigPin), _echo(echoPin), _toVal(tick), _repeat(repeat)
21400688 0:22391cd705e2 5 {
21400688 0:22391cd705e2 6 _done = 0;
21400688 0:22391cd705e2 7 _timer.reset();
21400688 0:22391cd705e2 8 _echo.rise(this, &Ultrasonic::_startT);
21400688 0:22391cd705e2 9 _echo.fall(this, &Ultrasonic::_endT);
21400688 0:22391cd705e2 10 if (_repeat) _ticker.attach(this, &Ultrasonic::_ticker_cb, _toVal);
21400688 0:22391cd705e2 11 }
21400688 0:22391cd705e2 12
21400688 0:22391cd705e2 13 Ultrasonic::~Ultrasonic() {}
21400688 0:22391cd705e2 14
21400688 0:22391cd705e2 15 void Ultrasonic::_startT(void)
21400688 0:22391cd705e2 16 {
21400688 0:22391cd705e2 17 _timer.start();
21400688 0:22391cd705e2 18 }
21400688 0:22391cd705e2 19 void Ultrasonic::_endT(void)
21400688 0:22391cd705e2 20 {
21400688 0:22391cd705e2 21 _timer.stop();
21400688 0:22391cd705e2 22 _pulseDuration = _timer.read_us();
21400688 0:22391cd705e2 23 _distance = _pulseDuration / 58;
21400688 0:22391cd705e2 24 _timer.reset();
21400688 0:22391cd705e2 25 _done = 1;
21400688 0:22391cd705e2 26 }
21400688 0:22391cd705e2 27
21400688 0:22391cd705e2 28
21400688 0:22391cd705e2 29 void Ultrasonic::trig()
21400688 0:22391cd705e2 30 {
21400688 0:22391cd705e2 31 _echo.enable_irq();
21400688 0:22391cd705e2 32 wait_us(2);
21400688 0:22391cd705e2 33 _trig = 1;
21400688 0:22391cd705e2 34 wait_us(10);
21400688 0:22391cd705e2 35 _trig = 0;
21400688 0:22391cd705e2 36 }
21400688 0:22391cd705e2 37 void Ultrasonic::_ticker_cb(void)
21400688 0:22391cd705e2 38 {
21400688 0:22391cd705e2 39 this->trig();
21400688 0:22391cd705e2 40 }
21400688 0:22391cd705e2 41
21400688 0:22391cd705e2 42 int Ultrasonic::getDistance(void)
21400688 0:22391cd705e2 43 {
21400688 0:22391cd705e2 44 return _distance;
21400688 0:22391cd705e2 45 }
21400688 0:22391cd705e2 46 int Ultrasonic::getPulseDuration(void)
21400688 0:22391cd705e2 47 {
21400688 0:22391cd705e2 48 return _pulseDuration;
21400688 0:22391cd705e2 49 }
21400688 0:22391cd705e2 50
21400688 0:22391cd705e2 51 void Ultrasonic::pauseMeasure(void)
21400688 0:22391cd705e2 52 {
21400688 0:22391cd705e2 53 _repeat = false;
21400688 0:22391cd705e2 54 _ticker.detach();
21400688 0:22391cd705e2 55 }
21400688 0:22391cd705e2 56 void Ultrasonic::setMode(bool mode)
21400688 0:22391cd705e2 57 {
21400688 0:22391cd705e2 58 _repeat = mode;
21400688 0:22391cd705e2 59 if (_repeat) _ticker.attach(this, &Ultrasonic::_ticker_cb, _toVal);
21400688 0:22391cd705e2 60 else _ticker.detach();
21400688 0:22391cd705e2 61 }
21400688 0:22391cd705e2 62
21400688 0:22391cd705e2 63 int Ultrasonic::getStatus()
21400688 0:22391cd705e2 64 {
21400688 0:22391cd705e2 65 return _done;
21400688 0:22391cd705e2 66 }
21400688 0:22391cd705e2 67 void Ultrasonic::clearStatus(void)
21400688 0:22391cd705e2 68 {
21400688 0:22391cd705e2 69 _done = 0;
21400688 0:22391cd705e2 70 }