update
Dependencies: Air_Quality DHT mbed-src
Fork of mbed_Wiznet_W7500 by
main.cpp@1:f9339d95123d, 2015-08-11 (annotated)
- Committer:
- ysy00700
- Date:
- Tue Aug 11 14:43:36 2015 +0000
- Revision:
- 1:f9339d95123d
- Parent:
- 0:d0e594c3fb6c
- Child:
- 2:37c5a8883978
All of Sensor control
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ysy00700 | 0:d0e594c3fb6c | 1 | #include "mbed.h" |
ysy00700 | 0:d0e594c3fb6c | 2 | #include "DHT.h" |
ysy00700 | 1:f9339d95123d | 3 | #include"Air_Quality.h" |
ysy00700 | 0:d0e594c3fb6c | 4 | |
ysy00700 | 1:f9339d95123d | 5 | AirQuality airqualitysensor; |
ysy00700 | 1:f9339d95123d | 6 | int current_quality = -1; |
ysy00700 | 1:f9339d95123d | 7 | PinName analogPin = A0; |
ysy00700 | 1:f9339d95123d | 8 | |
ysy00700 | 1:f9339d95123d | 9 | DHT sensor(D3, DHT11); |
ysy00700 | 0:d0e594c3fb6c | 10 | InterruptIn motion(D2); |
ysy00700 | 0:d0e594c3fb6c | 11 | AnalogIn luminance(A1); |
ysy00700 | 0:d0e594c3fb6c | 12 | |
ysy00700 | 0:d0e594c3fb6c | 13 | DigitalOut led_R(LED_RED); |
ysy00700 | 0:d0e594c3fb6c | 14 | DigitalOut led_G(LED_GREEN); |
ysy00700 | 0:d0e594c3fb6c | 15 | DigitalOut led_B(LED_BLUE); |
ysy00700 | 0:d0e594c3fb6c | 16 | |
ysy00700 | 0:d0e594c3fb6c | 17 | int motion_detected = 0; |
ysy00700 | 0:d0e594c3fb6c | 18 | |
ysy00700 | 1:f9339d95123d | 19 | // Interrupt Handler |
ysy00700 | 1:f9339d95123d | 20 | void AirQualityInterrupt() |
ysy00700 | 1:f9339d95123d | 21 | { |
ysy00700 | 1:f9339d95123d | 22 | AnalogIn sensor(analogPin); |
ysy00700 | 1:f9339d95123d | 23 | airqualitysensor.last_vol = airqualitysensor.first_vol; |
ysy00700 | 1:f9339d95123d | 24 | airqualitysensor.first_vol = sensor.read()*1000; |
ysy00700 | 1:f9339d95123d | 25 | airqualitysensor.timer_index = 1; |
ysy00700 | 1:f9339d95123d | 26 | } |
ysy00700 | 1:f9339d95123d | 27 | |
ysy00700 | 0:d0e594c3fb6c | 28 | void irq_handler(void) |
ysy00700 | 0:d0e594c3fb6c | 29 | { |
ysy00700 | 0:d0e594c3fb6c | 30 | motion_detected = 1; |
ysy00700 | 0:d0e594c3fb6c | 31 | } |
ysy00700 | 0:d0e594c3fb6c | 32 | |
ysy00700 | 0:d0e594c3fb6c | 33 | int main() |
ysy00700 | 0:d0e594c3fb6c | 34 | { |
ysy00700 | 0:d0e594c3fb6c | 35 | int error = 0; |
ysy00700 | 0:d0e594c3fb6c | 36 | float hum = 0.0f; |
ysy00700 | 0:d0e594c3fb6c | 37 | float cel = 0.0f; |
ysy00700 | 0:d0e594c3fb6c | 38 | |
ysy00700 | 1:f9339d95123d | 39 | airqualitysensor.init(analogPin, AirQualityInterrupt); |
ysy00700 | 1:f9339d95123d | 40 | |
ysy00700 | 0:d0e594c3fb6c | 41 | int cnt = 0; |
ysy00700 | 0:d0e594c3fb6c | 42 | motion.rise(&irq_handler); |
ysy00700 | 0:d0e594c3fb6c | 43 | |
ysy00700 | 0:d0e594c3fb6c | 44 | while(1) |
ysy00700 | 0:d0e594c3fb6c | 45 | { |
ysy00700 | 1:f9339d95123d | 46 | wait(0.1); |
ysy00700 | 0:d0e594c3fb6c | 47 | error = sensor.readData(); |
ysy00700 | 0:d0e594c3fb6c | 48 | |
ysy00700 | 0:d0e594c3fb6c | 49 | if (0 == error) { |
ysy00700 | 0:d0e594c3fb6c | 50 | hum = sensor.ReadHumidity(); |
ysy00700 | 0:d0e594c3fb6c | 51 | cel = sensor.ReadTemperature(CELCIUS); |
ysy00700 | 1:f9339d95123d | 52 | printf(" 1. Humidity : %4.2f\r\n\n", hum); |
ysy00700 | 1:f9339d95123d | 53 | printf(" 2. Temperature in Celcius : %2.2f\r\n\n", cel); |
ysy00700 | 0:d0e594c3fb6c | 54 | |
ysy00700 | 0:d0e594c3fb6c | 55 | { |
ysy00700 | 0:d0e594c3fb6c | 56 | if (hum > 70) { // if celcius is higher than 28, LED_RED on. |
ysy00700 | 0:d0e594c3fb6c | 57 | led_R = 0; // LED_RED on |
ysy00700 | 0:d0e594c3fb6c | 58 | led_B = 1; // LED_BLUE off |
ysy00700 | 0:d0e594c3fb6c | 59 | } |
ysy00700 | 0:d0e594c3fb6c | 60 | else{ |
ysy00700 | 0:d0e594c3fb6c | 61 | led_R = 1; // LED_RED off |
ysy00700 | 0:d0e594c3fb6c | 62 | led_B = 0; // LED_BLUE on |
ysy00700 | 0:d0e594c3fb6c | 63 | } |
ysy00700 | 0:d0e594c3fb6c | 64 | } |
ysy00700 | 0:d0e594c3fb6c | 65 | { |
ysy00700 | 0:d0e594c3fb6c | 66 | if(cel > 28) { // if celcius is higher than 28, LED_RED on. |
ysy00700 | 0:d0e594c3fb6c | 67 | led_R = 0; // LED_RED on |
ysy00700 | 0:d0e594c3fb6c | 68 | led_B = 1; // LED_BLUE off |
ysy00700 | 0:d0e594c3fb6c | 69 | } |
ysy00700 | 0:d0e594c3fb6c | 70 | else { |
ysy00700 | 0:d0e594c3fb6c | 71 | led_R = 1; // LED_RED off |
ysy00700 | 0:d0e594c3fb6c | 72 | led_B = 0; // LED_BLUE on |
ysy00700 | 0:d0e594c3fb6c | 73 | } |
ysy00700 | 0:d0e594c3fb6c | 74 | } |
ysy00700 | 0:d0e594c3fb6c | 75 | } |
ysy00700 | 0:d0e594c3fb6c | 76 | else { |
ysy00700 | 0:d0e594c3fb6c | 77 | printf("Error : %d\n", error); |
ysy00700 | 0:d0e594c3fb6c | 78 | } |
ysy00700 | 0:d0e594c3fb6c | 79 | |
ysy00700 | 0:d0e594c3fb6c | 80 | if(motion_detected) { |
ysy00700 | 0:d0e594c3fb6c | 81 | cnt++; |
ysy00700 | 0:d0e594c3fb6c | 82 | motion_detected = 0; |
ysy00700 | 1:f9339d95123d | 83 | /*led_R = 1; |
ysy00700 | 0:d0e594c3fb6c | 84 | led_G = 1; |
ysy00700 | 1:f9339d95123d | 85 | led_B = 1;*/ |
ysy00700 | 0:d0e594c3fb6c | 86 | |
ysy00700 | 1:f9339d95123d | 87 | printf("3. Something move%d\r\n\n", cnt); |
ysy00700 | 1:f9339d95123d | 88 | wait(0.1); |
ysy00700 | 0:d0e594c3fb6c | 89 | } |
ysy00700 | 0:d0e594c3fb6c | 90 | |
ysy00700 | 0:d0e594c3fb6c | 91 | if(luminance.read()){ |
ysy00700 | 0:d0e594c3fb6c | 92 | |
ysy00700 | 0:d0e594c3fb6c | 93 | if(0.1<=luminance.read()&&luminance.read()<=0.3){ |
ysy00700 | 1:f9339d95123d | 94 | led_R=0; led_G=0; led_B=1;} // yellow LED on |
ysy00700 | 0:d0e594c3fb6c | 95 | |
ysy00700 | 0:d0e594c3fb6c | 96 | else{ |
ysy00700 | 1:f9339d95123d | 97 | led_R=1; led_G=1; led_B=1;} // led off |
ysy00700 | 0:d0e594c3fb6c | 98 | |
ysy00700 | 1:f9339d95123d | 99 | printf("4. Luminance: %f\r\n\n", luminance.read()); |
ysy00700 | 1:f9339d95123d | 100 | wait(0.1); |
ysy00700 | 0:d0e594c3fb6c | 101 | } |
ysy00700 | 0:d0e594c3fb6c | 102 | else { |
ysy00700 | 1:f9339d95123d | 103 | led_R=0; led_G=0; led_B=0; // white LED on |
ysy00700 | 1:f9339d95123d | 104 | printf("4. Luminance: %f\r\n\n", luminance.read()); |
ysy00700 | 1:f9339d95123d | 105 | wait(0.1); |
ysy00700 | 0:d0e594c3fb6c | 106 | } |
ysy00700 | 1:f9339d95123d | 107 | //air quality sensor |
ysy00700 | 1:f9339d95123d | 108 | current_quality=airqualitysensor.slope(); |
ysy00700 | 1:f9339d95123d | 109 | if (current_quality >= 0) { // if a valid data returned. |
ysy00700 | 1:f9339d95123d | 110 | if (current_quality == 0){ |
ysy00700 | 1:f9339d95123d | 111 | printf("5. High pollution! Force signal active\n\r\n"); |
ysy00700 | 1:f9339d95123d | 112 | // led1 = 0; |
ysy00700 | 1:f9339d95123d | 113 | // led2 = 1; |
ysy00700 | 1:f9339d95123d | 114 | } |
ysy00700 | 1:f9339d95123d | 115 | else if (current_quality == 1){ |
ysy00700 | 1:f9339d95123d | 116 | printf("5. High pollution!\n\r\n"); |
ysy00700 | 1:f9339d95123d | 117 | // led1 = 0; |
ysy00700 | 1:f9339d95123d | 118 | // led2 = 1; |
ysy00700 | 1:f9339d95123d | 119 | } |
ysy00700 | 1:f9339d95123d | 120 | else if (current_quality == 2){ |
ysy00700 | 1:f9339d95123d | 121 | printf("5. Low pollution!\n\n\r"); |
ysy00700 | 1:f9339d95123d | 122 | // led1 = 0; |
ysy00700 | 1:f9339d95123d | 123 | // led2 = 1; |
ysy00700 | 1:f9339d95123d | 124 | } |
ysy00700 | 1:f9339d95123d | 125 | else if (current_quality == 3){ |
ysy00700 | 1:f9339d95123d | 126 | printf("5. Fresh air\n\r\n"); |
ysy00700 | 1:f9339d95123d | 127 | // led1 = 1; |
ysy00700 | 1:f9339d95123d | 128 | // led2 = 0; |
ysy00700 | 1:f9339d95123d | 129 | } |
ysy00700 | 1:f9339d95123d | 130 | } |
ysy00700 | 1:f9339d95123d | 131 | |
ysy00700 | 0:d0e594c3fb6c | 132 | } |
ysy00700 | 0:d0e594c3fb6c | 133 | } |
ysy00700 | 0:d0e594c3fb6c | 134 | /* |
ysy00700 | 0:d0e594c3fb6c | 135 | AnalogIn luminance(A0); |
ysy00700 | 0:d0e594c3fb6c | 136 | InterruptIn motion(D2); |
ysy00700 | 0:d0e594c3fb6c | 137 | |
ysy00700 | 0:d0e594c3fb6c | 138 | DigitalOut RED(LED1, 1); |
ysy00700 | 0:d0e594c3fb6c | 139 | DigitalOut GREEN(LED2, 1); |
ysy00700 | 0:d0e594c3fb6c | 140 | DigitalOut BLUE(LED3, 1); |
ysy00700 | 0:d0e594c3fb6c | 141 | |
ysy00700 | 0:d0e594c3fb6c | 142 | int motion_detected = 0; |
ysy00700 | 0:d0e594c3fb6c | 143 | |
ysy00700 | 0:d0e594c3fb6c | 144 | void irq_handler(void) |
ysy00700 | 0:d0e594c3fb6c | 145 | { |
ysy00700 | 0:d0e594c3fb6c | 146 | motion_detected = 1; |
ysy00700 | 0:d0e594c3fb6c | 147 | } |
ysy00700 | 0:d0e594c3fb6c | 148 | |
ysy00700 | 0:d0e594c3fb6c | 149 | int main() |
ysy00700 | 0:d0e594c3fb6c | 150 | { |
ysy00700 | 0:d0e594c3fb6c | 151 | int cnt = 0; |
ysy00700 | 0:d0e594c3fb6c | 152 | motion.rise(&irq_handler); |
ysy00700 | 0:d0e594c3fb6c | 153 | |
ysy00700 | 0:d0e594c3fb6c | 154 | while (true) { |
ysy00700 | 0:d0e594c3fb6c | 155 | |
ysy00700 | 0:d0e594c3fb6c | 156 | //grove motion sensor |
ysy00700 | 0:d0e594c3fb6c | 157 | if(motion_detected) { |
ysy00700 | 0:d0e594c3fb6c | 158 | cnt++; |
ysy00700 | 0:d0e594c3fb6c | 159 | motion_detected = 0; |
ysy00700 | 0:d0e594c3fb6c | 160 | RED = 0; |
ysy00700 | 0:d0e594c3fb6c | 161 | GREEN = 1; |
ysy00700 | 0:d0e594c3fb6c | 162 | BLUE = 1; |
ysy00700 | 0:d0e594c3fb6c | 163 | wait(1); |
ysy00700 | 0:d0e594c3fb6c | 164 | printf("Something move%d\r\n", cnt); |
ysy00700 | 0:d0e594c3fb6c | 165 | } |
ysy00700 | 0:d0e594c3fb6c | 166 | |
ysy00700 | 0:d0e594c3fb6c | 167 | //luminance sensor |
ysy00700 | 0:d0e594c3fb6c | 168 | if(luminance.read()){ |
ysy00700 | 0:d0e594c3fb6c | 169 | |
ysy00700 | 0:d0e594c3fb6c | 170 | if(0.1<=luminance.read()&&luminance.read()<=0.3){ |
ysy00700 | 0:d0e594c3fb6c | 171 | RED=0; GREEN=0; BLUE=1;} // yellow LED on |
ysy00700 | 0:d0e594c3fb6c | 172 | |
ysy00700 | 0:d0e594c3fb6c | 173 | else{ |
ysy00700 | 0:d0e594c3fb6c | 174 | RED=1; GREEN=1; BLUE=1;} // led off |
ysy00700 | 0:d0e594c3fb6c | 175 | |
ysy00700 | 0:d0e594c3fb6c | 176 | printf("Luminance: %f\r\n", luminance.read()); |
ysy00700 | 0:d0e594c3fb6c | 177 | wait(0.5f); |
ysy00700 | 0:d0e594c3fb6c | 178 | } |
ysy00700 | 0:d0e594c3fb6c | 179 | else { |
ysy00700 | 0:d0e594c3fb6c | 180 | RED=0; GREEN=0; BLUE=0; // white LED on |
ysy00700 | 0:d0e594c3fb6c | 181 | printf("Luminance: %f\r\n", luminance.read()); |
ysy00700 | 0:d0e594c3fb6c | 182 | wait(0.5f); |
ysy00700 | 0:d0e594c3fb6c | 183 | } |
ysy00700 | 0:d0e594c3fb6c | 184 | |
ysy00700 | 0:d0e594c3fb6c | 185 | } |
ysy00700 | 1:f9339d95123d | 186 | }*/ |
ysy00700 | 1:f9339d95123d | 187 | /* |
ysy00700 | 1:f9339d95123d | 188 | InterruptIn motion(D2); |
ysy00700 | 1:f9339d95123d | 189 | |
ysy00700 | 1:f9339d95123d | 190 | DigitalOut RED(LED1, 1); |
ysy00700 | 1:f9339d95123d | 191 | DigitalOut GREEN(LED2, 1); |
ysy00700 | 1:f9339d95123d | 192 | DigitalOut BLUE(LED3, 1); |
ysy00700 | 1:f9339d95123d | 193 | |
ysy00700 | 1:f9339d95123d | 194 | int motion_detected = 0; |
ysy00700 | 1:f9339d95123d | 195 | |
ysy00700 | 1:f9339d95123d | 196 | void irq_handler(void) |
ysy00700 | 1:f9339d95123d | 197 | { |
ysy00700 | 1:f9339d95123d | 198 | motion_detected = 1; |
ysy00700 | 1:f9339d95123d | 199 | } |
ysy00700 | 1:f9339d95123d | 200 | |
ysy00700 | 1:f9339d95123d | 201 | int main() |
ysy00700 | 1:f9339d95123d | 202 | { |
ysy00700 | 1:f9339d95123d | 203 | int cnt = 0; |
ysy00700 | 1:f9339d95123d | 204 | motion.rise(&irq_handler); |
ysy00700 | 1:f9339d95123d | 205 | |
ysy00700 | 1:f9339d95123d | 206 | while (true) { |
ysy00700 | 1:f9339d95123d | 207 | |
ysy00700 | 1:f9339d95123d | 208 | //grove motion sensor |
ysy00700 | 1:f9339d95123d | 209 | if(motion_detected) { |
ysy00700 | 1:f9339d95123d | 210 | cnt++; |
ysy00700 | 1:f9339d95123d | 211 | motion_detected = 0; |
ysy00700 | 1:f9339d95123d | 212 | RED = 0; |
ysy00700 | 1:f9339d95123d | 213 | GREEN = 1; |
ysy00700 | 1:f9339d95123d | 214 | BLUE = 1; |
ysy00700 | 1:f9339d95123d | 215 | wait(1); |
ysy00700 | 1:f9339d95123d | 216 | printf("Something move%d\r\n", cnt); |
ysy00700 | 1:f9339d95123d | 217 | } |
ysy00700 | 1:f9339d95123d | 218 | |
ysy00700 | 1:f9339d95123d | 219 | } |
ysy00700 | 0:d0e594c3fb6c | 220 | }*/ |