V1
Dependencies: simple-mbed-client
function.h@1:bb3336b7e953, 2017-03-07 (annotated)
- Committer:
- johnlynam2014
- Date:
- Tue Mar 07 12:57:42 2017 +0000
- Revision:
- 1:bb3336b7e953
Mbed_1st_Commit_V1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
johnlynam2014 | 1:bb3336b7e953 | 1 | #include "mbed.h" |
johnlynam2014 | 1:bb3336b7e953 | 2 | #include "rtos.h" |
johnlynam2014 | 1:bb3336b7e953 | 3 | #include "config.h" |
johnlynam2014 | 1:bb3336b7e953 | 4 | #include "security.h" |
johnlynam2014 | 1:bb3336b7e953 | 5 | #include "easy-connect.h" |
johnlynam2014 | 1:bb3336b7e953 | 6 | #include "simple-mbed-client.h" |
johnlynam2014 | 1:bb3336b7e953 | 7 | #include "hcsr04.h" |
johnlynam2014 | 1:bb3336b7e953 | 8 | |
johnlynam2014 | 1:bb3336b7e953 | 9 | // Permanent statuses (set by led/0/permanent_status) |
johnlynam2014 | 1:bb3336b7e953 | 10 | #define STATUS_NONE 0 |
johnlynam2014 | 1:bb3336b7e953 | 11 | #define STATUS_ON 1 |
johnlynam2014 | 1:bb3336b7e953 | 12 | #define STATUS_OFF 2 |
johnlynam2014 | 1:bb3336b7e953 | 13 | |
johnlynam2014 | 1:bb3336b7e953 | 14 | |
johnlynam2014 | 1:bb3336b7e953 | 15 | |
johnlynam2014 | 1:bb3336b7e953 | 16 | |
johnlynam2014 | 1:bb3336b7e953 | 17 | // Declare our peripherals here |
johnlynam2014 | 1:bb3336b7e953 | 18 | DigitalOut red(LED_RED); |
johnlynam2014 | 1:bb3336b7e953 | 19 | DigitalOut green(LED_GREEN); |
johnlynam2014 | 1:bb3336b7e953 | 20 | DigitalOut blue(LED_BLUE); |
johnlynam2014 | 1:bb3336b7e953 | 21 | |
johnlynam2014 | 1:bb3336b7e953 | 22 | |
johnlynam2014 | 1:bb3336b7e953 | 23 | //HCSR04 sensor(D12, D11); |
johnlynam2014 | 1:bb3336b7e953 | 24 | //set D12 = trigger D11 = echo |
johnlynam2014 | 1:bb3336b7e953 | 25 | DigitalOut trig = D12; |
johnlynam2014 | 1:bb3336b7e953 | 26 | DigitalIn echo = D11; |
johnlynam2014 | 1:bb3336b7e953 | 27 | Timer timer; |
johnlynam2014 | 1:bb3336b7e953 | 28 | long duration,distance_cm; |
johnlynam2014 | 1:bb3336b7e953 | 29 | |
johnlynam2014 | 1:bb3336b7e953 | 30 | //return distance in cm |
johnlynam2014 | 1:bb3336b7e953 | 31 | long distance(); |
johnlynam2014 | 1:bb3336b7e953 | 32 | long echo_duration(); |
johnlynam2014 | 1:bb3336b7e953 | 33 | long distanceDetect(); |
johnlynam2014 | 1:bb3336b7e953 | 34 | |
johnlynam2014 | 1:bb3336b7e953 | 35 | |
johnlynam2014 | 1:bb3336b7e953 | 36 | void run() |
johnlynam2014 | 1:bb3336b7e953 | 37 | { |
johnlynam2014 | 1:bb3336b7e953 | 38 | SimpleMbedClient client; |
johnlynam2014 | 1:bb3336b7e953 | 39 | |
johnlynam2014 | 1:bb3336b7e953 | 40 | SimpleResourceString name = client.define_resource("device/0/name", "jan", M2MBase::GET_PUT_ALLOWED, true);//User name |
johnlynam2014 | 1:bb3336b7e953 | 41 | SimpleResourceString sensorName = client.define_resource("device/0/sensorName", "jan", M2MBase::GET_PUT_ALLOWED, true);//Module Name |
johnlynam2014 | 1:bb3336b7e953 | 42 | SimpleResourceInt UltraSonicData = client.define_resource("device/0/USdata", 0, M2MBase::GET_ALLOWED);//UltraSonicData |
johnlynam2014 | 1:bb3336b7e953 | 43 | //SimpleResourceInt pirCount = client.define_resource("pir/0/count", 0, M2MBase::GET_ALLOWED); |
johnlynam2014 | 1:bb3336b7e953 | 44 | |
johnlynam2014 | 1:bb3336b7e953 | 45 | |
johnlynam2014 | 1:bb3336b7e953 | 46 | red=1; |
johnlynam2014 | 1:bb3336b7e953 | 47 | green=1; |
johnlynam2014 | 1:bb3336b7e953 | 48 | blue=1; |
johnlynam2014 | 1:bb3336b7e953 | 49 | //printf("\r\nMAIN\n\r"); |
johnlynam2014 | 1:bb3336b7e953 | 50 | sensorName = "Front Window 2"; |
johnlynam2014 | 1:bb3336b7e953 | 51 | name = "John Lynam"; |
johnlynam2014 | 1:bb3336b7e953 | 52 | distance(); |
johnlynam2014 | 1:bb3336b7e953 | 53 | UltraSonicData = distance_cm; |
johnlynam2014 | 1:bb3336b7e953 | 54 | //return distance_cm; |
johnlynam2014 | 1:bb3336b7e953 | 55 | |
johnlynam2014 | 1:bb3336b7e953 | 56 | |
johnlynam2014 | 1:bb3336b7e953 | 57 | } |
johnlynam2014 | 1:bb3336b7e953 | 58 | |
johnlynam2014 | 1:bb3336b7e953 | 59 | |
johnlynam2014 | 1:bb3336b7e953 | 60 | //dictance |
johnlynam2014 | 1:bb3336b7e953 | 61 | long distance() |
johnlynam2014 | 1:bb3336b7e953 | 62 | { |
johnlynam2014 | 1:bb3336b7e953 | 63 | |
johnlynam2014 | 1:bb3336b7e953 | 64 | //printf("in distance function\r\n"); |
johnlynam2014 | 1:bb3336b7e953 | 65 | duration = echo_duration(); |
johnlynam2014 | 1:bb3336b7e953 | 66 | distance_cm = (duration/2)/29.1; |
johnlynam2014 | 1:bb3336b7e953 | 67 | if(distance_cm < 20) |
johnlynam2014 | 1:bb3336b7e953 | 68 | { |
johnlynam2014 | 1:bb3336b7e953 | 69 | distanceDetect(); |
johnlynam2014 | 1:bb3336b7e953 | 70 | } |
johnlynam2014 | 1:bb3336b7e953 | 71 | else |
johnlynam2014 | 1:bb3336b7e953 | 72 | { |
johnlynam2014 | 1:bb3336b7e953 | 73 | |
johnlynam2014 | 1:bb3336b7e953 | 74 | |
johnlynam2014 | 1:bb3336b7e953 | 75 | } |
johnlynam2014 | 1:bb3336b7e953 | 76 | printf("end distance function\r\n"); |
johnlynam2014 | 1:bb3336b7e953 | 77 | return distance_cm; |
johnlynam2014 | 1:bb3336b7e953 | 78 | |
johnlynam2014 | 1:bb3336b7e953 | 79 | } |
johnlynam2014 | 1:bb3336b7e953 | 80 | |
johnlynam2014 | 1:bb3336b7e953 | 81 | long echo_duration() |
johnlynam2014 | 1:bb3336b7e953 | 82 | { |
johnlynam2014 | 1:bb3336b7e953 | 83 | //printf("in echo duration function\r\n"); |
johnlynam2014 | 1:bb3336b7e953 | 84 | timer.reset(); //reset timer |
johnlynam2014 | 1:bb3336b7e953 | 85 | trig=1; // trigger low |
johnlynam2014 | 1:bb3336b7e953 | 86 | wait_us(2); // wait |
johnlynam2014 | 1:bb3336b7e953 | 87 | trig=0; // trigger high |
johnlynam2014 | 1:bb3336b7e953 | 88 | wait_us(10); |
johnlynam2014 | 1:bb3336b7e953 | 89 | trig=1; // trigger low |
johnlynam2014 | 1:bb3336b7e953 | 90 | while(!echo); // start pulseIN |
johnlynam2014 | 1:bb3336b7e953 | 91 | timer.start(); |
johnlynam2014 | 1:bb3336b7e953 | 92 | while(echo); |
johnlynam2014 | 1:bb3336b7e953 | 93 | timer.stop(); |
johnlynam2014 | 1:bb3336b7e953 | 94 | //printf("end echo duration function\r\n"); |
johnlynam2014 | 1:bb3336b7e953 | 95 | return timer.read_us(); |
johnlynam2014 | 1:bb3336b7e953 | 96 | |
johnlynam2014 | 1:bb3336b7e953 | 97 | } |
johnlynam2014 | 1:bb3336b7e953 | 98 | |
johnlynam2014 | 1:bb3336b7e953 | 99 | long distanceDetect() |
johnlynam2014 | 1:bb3336b7e953 | 100 | { |
johnlynam2014 | 1:bb3336b7e953 | 101 | DigitalOut led(LED_RED); |
johnlynam2014 | 1:bb3336b7e953 | 102 | DigitalOut led2(LED_BLUE); |
johnlynam2014 | 1:bb3336b7e953 | 103 | //an action to demo distance change |
johnlynam2014 | 1:bb3336b7e953 | 104 | led = !led; // toggle led |
johnlynam2014 | 1:bb3336b7e953 | 105 | wait(0.2f); |
johnlynam2014 | 1:bb3336b7e953 | 106 | led = !led2; // toggle led |
johnlynam2014 | 1:bb3336b7e953 | 107 | wait(0.2f); |
johnlynam2014 | 1:bb3336b7e953 | 108 | printf("Distance change detected: %d", distance_cm); |
johnlynam2014 | 1:bb3336b7e953 | 109 | printf("\n\r"); |
johnlynam2014 | 1:bb3336b7e953 | 110 | return distance_cm; |
johnlynam2014 | 1:bb3336b7e953 | 111 | |
johnlynam2014 | 1:bb3336b7e953 | 112 | } |
johnlynam2014 | 1:bb3336b7e953 | 113 | |
johnlynam2014 | 1:bb3336b7e953 | 114 | |
johnlynam2014 | 1:bb3336b7e953 | 115 | // Registered callback for mbed Client |
johnlynam2014 | 1:bb3336b7e953 | 116 | DigitalOut statusLed(LED1, 1); |
johnlynam2014 | 1:bb3336b7e953 | 117 | |
johnlynam2014 | 1:bb3336b7e953 | 118 | void registered() |
johnlynam2014 | 1:bb3336b7e953 | 119 | { |
johnlynam2014 | 1:bb3336b7e953 | 120 | printf("Welcome John Lynam"); |
johnlynam2014 | 1:bb3336b7e953 | 121 | statusLed = 0; |
johnlynam2014 | 1:bb3336b7e953 | 122 | } |
johnlynam2014 | 1:bb3336b7e953 | 123 | |
johnlynam2014 | 1:bb3336b7e953 | 124 | |
johnlynam2014 | 1:bb3336b7e953 | 125 | |
johnlynam2014 | 1:bb3336b7e953 | 126 |