RYU HoSeong
Dependencies: HC_SR04_Ultrasonic_Library mbed-rtos mbed-src mbed HCSR04
Fork of Nucleo_UltrasonicHelloWorld by
main.cpp@2:3dcb6f86ed22, 2015-08-06 (annotated)
- Committer:
- ryuhs74
- Date:
- Thu Aug 06 12:27:21 2015 +0000
- Revision:
- 2:3dcb6f86ed22
- Parent:
- 1:4a5586eb1765
- Child:
- 4:eb5a51640b43
RYU HoSeong
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ejteb | 0:1704ea055c4f | 1 | #include "mbed.h" |
ejteb | 0:1704ea055c4f | 2 | #include "ultrasonic.h" |
ejteb | 0:1704ea055c4f | 3 | |
ryuhs74 | 2:3dcb6f86ed22 | 4 | |
ryuhs74 | 2:3dcb6f86ed22 | 5 | //#define USE_THREAD |
ryuhs74 | 2:3dcb6f86ed22 | 6 | #ifdef USE_THREAD |
ryuhs74 | 2:3dcb6f86ed22 | 7 | #include "rtos.h" |
ryuhs74 | 2:3dcb6f86ed22 | 8 | #endif |
ryuhs74 | 2:3dcb6f86ed22 | 9 | |
ryuhs74 | 2:3dcb6f86ed22 | 10 | int sum_dist[3] = {0,}; //ryuhs74@20150712 - |
ryuhs74 | 2:3dcb6f86ed22 | 11 | int avg_dist = 0; //ryuhs74@20150712 - |
ryuhs74 | 2:3dcb6f86ed22 | 12 | int index_dist = 0; //ryuhs74@20150712 - |
ryuhs74 | 2:3dcb6f86ed22 | 13 | |
ryuhs74 | 2:3dcb6f86ed22 | 14 | Serial pc(USBTX, USBRX); // tx, rx |
ryuhs74 | 2:3dcb6f86ed22 | 15 | |
ryuhs74 | 2:3dcb6f86ed22 | 16 | #ifdef USE_THREAD |
ryuhs74 | 2:3dcb6f86ed22 | 17 | int isRun_thread = 0; |
ryuhs74 | 2:3dcb6f86ed22 | 18 | Thread *pThread = NULL; |
ryuhs74 | 2:3dcb6f86ed22 | 19 | |
ryuhs74 | 2:3dcb6f86ed22 | 20 | void camera_thread( void const* args) |
ryuhs74 | 2:3dcb6f86ed22 | 21 | { |
ryuhs74 | 2:3dcb6f86ed22 | 22 | isRun_thread = 1; |
ryuhs74 | 2:3dcb6f86ed22 | 23 | |
ryuhs74 | 2:3dcb6f86ed22 | 24 | while(isRun_thread){ |
ryuhs74 | 2:3dcb6f86ed22 | 25 | //ryuhs74@20150713 START - TEST code |
ryuhs74 | 2:3dcb6f86ed22 | 26 | for(int i = 0; i<100;i++){ |
ryuhs74 | 2:3dcb6f86ed22 | 27 | wait(1); |
ryuhs74 | 2:3dcb6f86ed22 | 28 | } |
ryuhs74 | 2:3dcb6f86ed22 | 29 | break; |
ryuhs74 | 2:3dcb6f86ed22 | 30 | //ryuhs74@20150713 - TEST code END |
ryuhs74 | 2:3dcb6f86ed22 | 31 | } |
ryuhs74 | 2:3dcb6f86ed22 | 32 | |
ryuhs74 | 2:3dcb6f86ed22 | 33 | if( pThread != NULL ){ |
ryuhs74 | 2:3dcb6f86ed22 | 34 | pThread->terminate(); |
ryuhs74 | 2:3dcb6f86ed22 | 35 | pThread = NULL; |
ryuhs74 | 2:3dcb6f86ed22 | 36 | } |
ryuhs74 | 2:3dcb6f86ed22 | 37 | isRun_thread = 0; |
ryuhs74 | 2:3dcb6f86ed22 | 38 | return; |
ryuhs74 | 2:3dcb6f86ed22 | 39 | } |
ryuhs74 | 2:3dcb6f86ed22 | 40 | #endif |
ryuhs74 | 2:3dcb6f86ed22 | 41 | |
ryuhs74 | 2:3dcb6f86ed22 | 42 | void dist(int distance) |
ejteb | 0:1704ea055c4f | 43 | { |
ejteb | 1:4a5586eb1765 | 44 | //put code here to happen when the distance is changed |
ryuhs74 | 2:3dcb6f86ed22 | 45 | pc.printf("Distance changed to %d mm\r\n", distance); |
ejteb | 0:1704ea055c4f | 46 | } |
ejteb | 0:1704ea055c4f | 47 | |
ryuhs74 | 2:3dcb6f86ed22 | 48 | #define TEST_ULTRASONIC |
ryuhs74 | 2:3dcb6f86ed22 | 49 | #ifdef TEST_ULTRASONIC |
ejteb | 1:4a5586eb1765 | 50 | ultrasonic mu(D8, D9, .1, 1, &dist); //Set the trigger pin to D8 and the echo pin to D9 |
ryuhs74 | 2:3dcb6f86ed22 | 51 | //have updates every .1 seconds and a timeout after 1 |
ryuhs74 | 2:3dcb6f86ed22 | 52 | //second, and call dist when the distance changes |
ryuhs74 | 2:3dcb6f86ed22 | 53 | #endif |
ejteb | 0:1704ea055c4f | 54 | |
ejteb | 0:1704ea055c4f | 55 | int main() |
ejteb | 0:1704ea055c4f | 56 | { |
ryuhs74 | 2:3dcb6f86ed22 | 57 | pc.printf("Start ----> \n"); |
ryuhs74 | 2:3dcb6f86ed22 | 58 | |
ryuhs74 | 2:3dcb6f86ed22 | 59 | #ifdef TEST_ULTRASONIC |
ejteb | 1:4a5586eb1765 | 60 | mu.startUpdates();//start mesuring the distance |
ryuhs74 | 2:3dcb6f86ed22 | 61 | #endif |
ryuhs74 | 2:3dcb6f86ed22 | 62 | |
ryuhs74 | 2:3dcb6f86ed22 | 63 | while(1) { |
ryuhs74 | 2:3dcb6f86ed22 | 64 | #ifdef TEST_ULTRASONIC |
ryuhs74 | 2:3dcb6f86ed22 | 65 | pc.printf("Before mu.checkDistance();\n"); |
ejteb | 1:4a5586eb1765 | 66 | //Do something else here |
ejteb | 1:4a5586eb1765 | 67 | mu.checkDistance(); //call checkDistance() as much as possible, as this is where |
ryuhs74 | 2:3dcb6f86ed22 | 68 | //the class checks if dist needs to be called. |
ryuhs74 | 2:3dcb6f86ed22 | 69 | pc.printf("After mu.checkDistance();\n"); |
ryuhs74 | 2:3dcb6f86ed22 | 70 | |
ryuhs74 | 2:3dcb6f86ed22 | 71 | //ryuhs74@20150712 START - |
ryuhs74 | 2:3dcb6f86ed22 | 72 | if( index_dist < 3){ |
ryuhs74 | 2:3dcb6f86ed22 | 73 | pc.printf("Before mu.getCurrentDistance();\n"); |
ryuhs74 | 2:3dcb6f86ed22 | 74 | sum_dist[index_dist] = mu.getCurrentDistance(); |
ryuhs74 | 2:3dcb6f86ed22 | 75 | pc.printf("sum_dist[index_dist(%d)] = %d\n", index_dist, sum_dist[index_dist]); |
ryuhs74 | 2:3dcb6f86ed22 | 76 | index_dist ++; |
ryuhs74 | 2:3dcb6f86ed22 | 77 | } else { |
ryuhs74 | 2:3dcb6f86ed22 | 78 | pc.printf("Before index_dist( %d ) ", index_dist); |
ryuhs74 | 2:3dcb6f86ed22 | 79 | index_dist = 0; |
ryuhs74 | 2:3dcb6f86ed22 | 80 | pc.printf("After index_dist( %d )\n", index_dist); |
ryuhs74 | 2:3dcb6f86ed22 | 81 | |
ryuhs74 | 2:3dcb6f86ed22 | 82 | for(int i =0; i<3;i++){ |
ryuhs74 | 2:3dcb6f86ed22 | 83 | avg_dist += sum_dist[i]; |
ryuhs74 | 2:3dcb6f86ed22 | 84 | } |
ryuhs74 | 2:3dcb6f86ed22 | 85 | |
ryuhs74 | 2:3dcb6f86ed22 | 86 | //avg_dist /= avg_dist; |
ryuhs74 | 2:3dcb6f86ed22 | 87 | |
ryuhs74 | 2:3dcb6f86ed22 | 88 | if( avg_dist <= 1 ){ |
ryuhs74 | 2:3dcb6f86ed22 | 89 | #ifdef USE_THREAD |
ryuhs74 | 2:3dcb6f86ed22 | 90 | if( isRun_thread == 0 ){ |
ryuhs74 | 2:3dcb6f86ed22 | 91 | Thread thread(camera_thread); |
ryuhs74 | 2:3dcb6f86ed22 | 92 | |
ryuhs74 | 2:3dcb6f86ed22 | 93 | if( pThread == NULL) |
ryuhs74 | 2:3dcb6f86ed22 | 94 | pThread = (Thread*)&thread; |
ryuhs74 | 2:3dcb6f86ed22 | 95 | |
ryuhs74 | 2:3dcb6f86ed22 | 96 | } |
ryuhs74 | 2:3dcb6f86ed22 | 97 | #endif |
ryuhs74 | 2:3dcb6f86ed22 | 98 | |
ryuhs74 | 2:3dcb6f86ed22 | 99 | } |
ryuhs74 | 2:3dcb6f86ed22 | 100 | } |
ryuhs74 | 2:3dcb6f86ed22 | 101 | #endif |
ryuhs74 | 2:3dcb6f86ed22 | 102 | pc.printf("wait(1)\n"); |
ryuhs74 | 2:3dcb6f86ed22 | 103 | //ryuhs74@20150712 - END |
ryuhs74 | 2:3dcb6f86ed22 | 104 | wait(1); //ryuhs7474@20150713 - 초당 한번씩 딜레이를 준다 |
ejteb | 0:1704ea055c4f | 105 | } |
ejteb | 0:1704ea055c4f | 106 | } |