Ultra

Dependents:   Group2 c8_Final_course1

Committer:
kmsmile2
Date:
Wed Jun 12 08:06:16 2019 +0000
Revision:
5:77c5e5b512c7
Parent:
2:cc1143d36567
ultra;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ejteb 0:6aa04a8c8d4c 1 #ifndef MBED_ULTRASONIC_H
ejteb 0:6aa04a8c8d4c 2 #define MBED_ULTRASONIC_H
ejteb 0:6aa04a8c8d4c 3
ejteb 0:6aa04a8c8d4c 4 #include "mbed.h"
ejteb 0:6aa04a8c8d4c 5
kmsmile2 5:77c5e5b512c7 6 class Ultrasonic
ejteb 0:6aa04a8c8d4c 7 {
kmsmile2 5:77c5e5b512c7 8 public:
kmsmile2 5:77c5e5b512c7 9 /** initiates the class with the spcified trigger pin, echo pin, update speed and timeout **/
kmsmile2 5:77c5e5b512c7 10 Ultrasonic(PinName trigPin, PinName echoPin, float timeout = 0.1, bool repeat = false);
kmsmile2 5:77c5e5b512c7 11
kmsmile2 5:77c5e5b512c7 12 ~Ultrasonic();
kmsmile2 5:77c5e5b512c7 13
kmsmile2 5:77c5e5b512c7 14 // generate 10us trig signal
kmsmile2 5:77c5e5b512c7 15 void trig(void);
kmsmile2 5:77c5e5b512c7 16
kmsmile2 5:77c5e5b512c7 17 // return distance in cm and return -1 in case of failure
kmsmile2 5:77c5e5b512c7 18 int getDistance(void);
kmsmile2 5:77c5e5b512c7 19
kmsmile2 5:77c5e5b512c7 20 // return the echo pulse duration in us and return -1 in case of failue
kmsmile2 5:77c5e5b512c7 21 int getPulseDuration(void);
kmsmile2 5:77c5e5b512c7 22
kmsmile2 5:77c5e5b512c7 23 // get a status whether measurement is done or not
kmsmile2 5:77c5e5b512c7 24 int getStatus(void);
kmsmile2 5:77c5e5b512c7 25
kmsmile2 5:77c5e5b512c7 26 // clear the status that represents measurement-done.
kmsmile2 5:77c5e5b512c7 27 void clearStatus(void);
kmsmile2 5:77c5e5b512c7 28
kmsmile2 5:77c5e5b512c7 29 // stop measuring
kmsmile2 5:77c5e5b512c7 30 void pauseMeasure(void);
kmsmile2 5:77c5e5b512c7 31
kmsmile2 5:77c5e5b512c7 32 // set measurement mode (repeated or once)
kmsmile2 5:77c5e5b512c7 33 void setMode(bool mode);
kmsmile2 5:77c5e5b512c7 34
kmsmile2 5:77c5e5b512c7 35 // set timeout of repeated mode
kmsmile2 5:77c5e5b512c7 36 void setTime(float time);
kmsmile2 5:77c5e5b512c7 37
kmsmile2 5:77c5e5b512c7 38 private:
kmsmile2 5:77c5e5b512c7 39 DigitalOut _trig;
kmsmile2 5:77c5e5b512c7 40 InterruptIn _echo;
kmsmile2 5:77c5e5b512c7 41
kmsmile2 5:77c5e5b512c7 42 Timer _timer;
kmsmile2 5:77c5e5b512c7 43 Timeout _timeout;
kmsmile2 5:77c5e5b512c7 44
kmsmile2 5:77c5e5b512c7 45 float _toVal; // timeout value in sec, or retrig time in sec if repeat == true (반복하는 시간)
kmsmile2 5:77c5e5b512c7 46 bool _repeat; // if true, measure repeatedly with the time interval timeout (1이면 반복, 0이면 한번)
kmsmile2 5:77c5e5b512c7 47
kmsmile2 5:77c5e5b512c7 48 int _distance;
kmsmile2 5:77c5e5b512c7 49 int _pulseDuration;
kmsmile2 5:77c5e5b512c7 50
kmsmile2 5:77c5e5b512c7 51 void _startT(void); // 트리거 스타트 지점
kmsmile2 5:77c5e5b512c7 52 void _endT(void); // 트리거 종료 지점
kmsmile2 5:77c5e5b512c7 53 void _timeout_cb(void);
kmsmile2 5:77c5e5b512c7 54
kmsmile2 5:77c5e5b512c7 55 int _done; // end of measure
kmsmile2 5:77c5e5b512c7 56 int _cnt; // Number of loop
kmsmile2 5:77c5e5b512c7 57
ejteb 0:6aa04a8c8d4c 58 };
kmsmile2 5:77c5e5b512c7 59 #endif