HOme Sheriff And Lamp
Dependencies: CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed
Fork of HoSAL by
rev_Hcsr04.cpp@2:3c7526a1893a, 2015-08-11 (annotated)
- Committer:
- uasonice
- Date:
- Tue Aug 11 16:30:37 2015 +0000
- Revision:
- 2:3c7526a1893a
- Parent:
- 0:35211a622a44
- Child:
- 8:28f7b30c1ae4
update get_distance(); support param instance handle
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
uasonice | 0:35211a622a44 | 1 | /* |
uasonice | 0:35211a622a44 | 2 | # coded by revival / uasonice (at) gmail.com |
uasonice | 0:35211a622a44 | 3 | # DATE: 2015/08/10 / Mon Aug 10 21:21:36 KST 2015 |
uasonice | 0:35211a622a44 | 4 | # |
uasonice | 0:35211a622a44 | 5 | # DESCRIPTION: |
uasonice | 0:35211a622a44 | 6 | # copied from Ultrasonic by Ryu |
uasonice | 0:35211a622a44 | 7 | # |
uasonice | 0:35211a622a44 | 8 | */ |
uasonice | 0:35211a622a44 | 9 | |
uasonice | 0:35211a622a44 | 10 | #include "mbed.h" |
uasonice | 0:35211a622a44 | 11 | #include <stdio.h> |
uasonice | 0:35211a622a44 | 12 | #include <string.h> |
uasonice | 0:35211a622a44 | 13 | |
uasonice | 0:35211a622a44 | 14 | #define DEBUG_TYPE 1 |
uasonice | 0:35211a622a44 | 15 | #define P_ uart.printf |
uasonice | 0:35211a622a44 | 16 | #include "rev_config.h" |
uasonice | 0:35211a622a44 | 17 | |
uasonice | 0:35211a622a44 | 18 | #include "rev_Hcsr04.h" |
uasonice | 0:35211a622a44 | 19 | |
uasonice | 0:35211a622a44 | 20 | |
uasonice | 0:35211a622a44 | 21 | #if defined(USE_MEASURE_DISTANCE) |
uasonice | 2:3c7526a1893a | 22 | long avg_dist = 0; |
uasonice | 2:3c7526a1893a | 23 | long distance_cm = 0; //ryuhs74@20150810 - Add |
uasonice | 2:3c7526a1893a | 24 | uint8_t index_dist = 0; |
uasonice | 2:3c7526a1893a | 25 | long sum_dist[3]; |
uasonice | 2:3c7526a1893a | 26 | |
uasonice | 2:3c7526a1893a | 27 | int get_distance(HCSR04 *pH) |
uasonice | 0:35211a622a44 | 28 | { |
uasonice | 2:3c7526a1893a | 29 | |
uasonice | 0:35211a622a44 | 30 | while (true) { |
uasonice | 2:3c7526a1893a | 31 | distance_cm = pH->distance(); //ryuhs74@20150810 - cm 단위 측정 거리 return |
uasonice | 0:35211a622a44 | 32 | if( index_dist < 3){ //ryuhs74@20150810 |
uasonice | 0:35211a622a44 | 33 | sum_dist[index_dist] = distance_cm; |
uasonice | 0:35211a622a44 | 34 | DM_fLN("sum_dist[%d] = %d", index_dist, sum_dist[index_dist]); |
uasonice | 0:35211a622a44 | 35 | index_dist ++; |
uasonice | 0:35211a622a44 | 36 | } else { |
uasonice | 0:35211a622a44 | 37 | avg_dist = 0; |
uasonice | 0:35211a622a44 | 38 | index_dist = 0; |
uasonice | 0:35211a622a44 | 39 | |
uasonice | 0:35211a622a44 | 40 | for(int i =0; i<3;i++){ |
uasonice | 0:35211a622a44 | 41 | avg_dist += sum_dist[i]; |
uasonice | 0:35211a622a44 | 42 | } |
uasonice | 0:35211a622a44 | 43 | |
uasonice | 0:35211a622a44 | 44 | avg_dist /= 3; |
uasonice | 2:3c7526a1893a | 45 | DM_fLN("avg: %d", avg_dist); |
uasonice | 0:35211a622a44 | 46 | return avg_dist; |
uasonice | 0:35211a622a44 | 47 | } |
uasonice | 0:35211a622a44 | 48 | #if 0 |
uasonice | 0:35211a622a44 | 49 | wait_ms(10); |
uasonice | 0:35211a622a44 | 50 | #else |
uasonice | 0:35211a622a44 | 51 | break; |
uasonice | 0:35211a622a44 | 52 | #endif |
uasonice | 0:35211a622a44 | 53 | } |
uasonice | 0:35211a622a44 | 54 | return 8192; |
uasonice | 0:35211a622a44 | 55 | } |
uasonice | 0:35211a622a44 | 56 | #endif // defined(USE_MEASURE_DISTANCE) |
uasonice | 0:35211a622a44 | 57 |