Ultra
Dependents: Group2 c8_Final_course1
ultrasonic.h@5:77c5e5b512c7, 2019-06-12 (annotated)
- Committer:
- kmsmile2
- Date:
- Wed Jun 12 08:06:16 2019 +0000
- Revision:
- 5:77c5e5b512c7
- Parent:
- 2:cc1143d36567
ultra;
Who changed what in which revision?
User | Revision | Line number | New 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 |