ss
Dependencies: WS2812 PixelArray Adafruit_GFX
hcsr04.cpp@3:700a0cf6beea, 2019-06-15 (annotated)
- Committer:
- eunsong
- Date:
- Sat Jun 15 13:48:45 2019 +0000
- Revision:
- 3:700a0cf6beea
- Parent:
- 0:27e31cadeb36
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eunsong | 0:27e31cadeb36 | 1 | #include "hcsr04.h" |
eunsong | 0:27e31cadeb36 | 2 | #include "mbed.h" |
eunsong | 0:27e31cadeb36 | 3 | /* |
eunsong | 0:27e31cadeb36 | 4 | *HCSR04.cpp |
eunsong | 0:27e31cadeb36 | 5 | */ |
eunsong | 0:27e31cadeb36 | 6 | HCSR04::HCSR04(PinName t, PinName e, RawSerial pc,int flag, int limit) : trig(t), echo(e), _pc(pc), flag(flag), _limit(limit) {} |
eunsong | 0:27e31cadeb36 | 7 | |
eunsong | 0:27e31cadeb36 | 8 | void HCSR04::Trig() |
eunsong | 0:27e31cadeb36 | 9 | { |
eunsong | 0:27e31cadeb36 | 10 | timer.reset(); //reset timer |
eunsong | 0:27e31cadeb36 | 11 | trig=0; // trigger low |
eunsong | 0:27e31cadeb36 | 12 | wait_us(2); // wait |
eunsong | 0:27e31cadeb36 | 13 | trig=1; // trigger high |
eunsong | 0:27e31cadeb36 | 14 | wait_us(10); |
eunsong | 0:27e31cadeb36 | 15 | trig=0; // trigger low |
eunsong | 0:27e31cadeb36 | 16 | } |
eunsong | 0:27e31cadeb36 | 17 | |
eunsong | 0:27e31cadeb36 | 18 | /* |
eunsong | 0:27e31cadeb36 | 19 | void HCSR04::setMode(bool mode) |
eunsong | 0:27e31cadeb36 | 20 | { |
eunsong | 0:27e31cadeb36 | 21 | _repeat = mode; |
eunsong | 0:27e31cadeb36 | 22 | } |
eunsong | 0:27e31cadeb36 | 23 | |
eunsong | 0:27e31cadeb36 | 24 | void HCSR04::clearStatus() |
eunsong | 0:27e31cadeb36 | 25 | { |
eunsong | 0:27e31cadeb36 | 26 | _done = 0; |
eunsong | 0:27e31cadeb36 | 27 | } |
eunsong | 0:27e31cadeb36 | 28 | |
eunsong | 0:27e31cadeb36 | 29 | int HCSR04::getStatus() |
eunsong | 0:27e31cadeb36 | 30 | { |
eunsong | 0:27e31cadeb36 | 31 | return _done; |
eunsong | 0:27e31cadeb36 | 32 | }*/ |
eunsong | 0:27e31cadeb36 | 33 | |
eunsong | 0:27e31cadeb36 | 34 | |
eunsong | 0:27e31cadeb36 | 35 | |
eunsong | 0:27e31cadeb36 | 36 | long HCSR04::echo_duration() { |
eunsong | 0:27e31cadeb36 | 37 | |
eunsong | 0:27e31cadeb36 | 38 | Trig(); |
eunsong | 0:27e31cadeb36 | 39 | while(!echo); // start pulseIN |
eunsong | 0:27e31cadeb36 | 40 | timer.start(); |
eunsong | 0:27e31cadeb36 | 41 | while(echo); |
eunsong | 0:27e31cadeb36 | 42 | timer.stop(); |
eunsong | 0:27e31cadeb36 | 43 | return timer.read_us(); |
eunsong | 0:27e31cadeb36 | 44 | |
eunsong | 0:27e31cadeb36 | 45 | } |
eunsong | 0:27e31cadeb36 | 46 | |
eunsong | 0:27e31cadeb36 | 47 | //return distance in cm |
eunsong | 0:27e31cadeb36 | 48 | void HCSR04::distance(){ |
eunsong | 0:27e31cadeb36 | 49 | // _done++; |
eunsong | 0:27e31cadeb36 | 50 | duration = echo_duration(); |
eunsong | 0:27e31cadeb36 | 51 | distance_cm = int((duration/2)/29.1) ; |
eunsong | 0:27e31cadeb36 | 52 | _pc.printf("distance: %d\r\n", distance_cm); |
eunsong | 0:27e31cadeb36 | 53 | if(distance_cm <= _limit){ |
eunsong | 0:27e31cadeb36 | 54 | flag = 1; |
eunsong | 0:27e31cadeb36 | 55 | _pc.printf("\t\tFlag on distance: %d\r\n", distance_cm); |
eunsong | 0:27e31cadeb36 | 56 | |
eunsong | 0:27e31cadeb36 | 57 | } |
eunsong | 0:27e31cadeb36 | 58 | } |
eunsong | 0:27e31cadeb36 | 59 | |
eunsong | 0:27e31cadeb36 | 60 | long HCSR04::returndistance() |
eunsong | 0:27e31cadeb36 | 61 | { |
eunsong | 0:27e31cadeb36 | 62 | return distance_cm; |
eunsong | 0:27e31cadeb36 | 63 | } |