ECE533 project

Dependencies:   EthernetInterface M2XStreamClient MODSERIAL jsonlite mbed-rtos mbed

Committer:
dallas1287
Date:
Fri Dec 08 17:20:10 2017 +0000
Revision:
0:7d95a161fefc
updated for usage;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dallas1287 0:7d95a161fefc 1 #include "mbed.h"
dallas1287 0:7d95a161fefc 2 #include "EthernetInterface.h"
dallas1287 0:7d95a161fefc 3 #include "M2XStreamClient.h"
dallas1287 0:7d95a161fefc 4 #include "MODSERIAL.h"
dallas1287 0:7d95a161fefc 5
dallas1287 0:7d95a161fefc 6 //function declaration
dallas1287 0:7d95a161fefc 7 void TimerRead(void);
dallas1287 0:7d95a161fefc 8 void MotionSense(void);
dallas1287 0:7d95a161fefc 9 void motiontrigger(void);
dallas1287 0:7d95a161fefc 10 void ledbounce(void);
dallas1287 0:7d95a161fefc 11 void RxRead(void);
dallas1287 0:7d95a161fefc 12 void motionTimeOut(void);
dallas1287 0:7d95a161fefc 13 void streamData(void);
dallas1287 0:7d95a161fefc 14 void SecurityCam(void);
dallas1287 0:7d95a161fefc 15 void SecurityEnable(void);
dallas1287 0:7d95a161fefc 16
dallas1287 0:7d95a161fefc 17 //bluetooth variables
dallas1287 0:7d95a161fefc 18 bool btflag = false;
dallas1287 0:7d95a161fefc 19 char received[256] = {""};
dallas1287 0:7d95a161fefc 20 int i = 0;
dallas1287 0:7d95a161fefc 21 //led variables
dallas1287 0:7d95a161fefc 22 int led_total = 0;
dallas1287 0:7d95a161fefc 23 int led_session = 0;
dallas1287 0:7d95a161fefc 24 bool ledtimerflag = false;
dallas1287 0:7d95a161fefc 25 DigitalOut led(LED_RED);
dallas1287 0:7d95a161fefc 26 //fan variables
dallas1287 0:7d95a161fefc 27 int fan_total = 0;
dallas1287 0:7d95a161fefc 28 int fan_session = 0;
dallas1287 0:7d95a161fefc 29 bool fantimerflag = false;
dallas1287 0:7d95a161fefc 30 PwmOut fan(D3);
dallas1287 0:7d95a161fefc 31 //Motion Sensor Variables
dallas1287 0:7d95a161fefc 32 InterruptIn motionsensor(D2);
dallas1287 0:7d95a161fefc 33 DigitalOut motionsensorpwr(D1, 0);
dallas1287 0:7d95a161fefc 34 //Motion Sensor Timeout
dallas1287 0:7d95a161fefc 35 Timeout motionTimeout;
dallas1287 0:7d95a161fefc 36 //Timers Initialization
dallas1287 0:7d95a161fefc 37 Timer ledtimer;
dallas1287 0:7d95a161fefc 38 Timer fantimer;
dallas1287 0:7d95a161fefc 39 // Initialize Serial port
dallas1287 0:7d95a161fefc 40 Serial pc(USBTX, USBRX);
dallas1287 0:7d95a161fefc 41 //bluetooth module declaration
dallas1287 0:7d95a161fefc 42 MODSERIAL HC05(PTC15, PTC14);
dallas1287 0:7d95a161fefc 43 //security camera
dallas1287 0:7d95a161fefc 44 DigitalOut securitycam(D5, 0);
dallas1287 0:7d95a161fefc 45 bool securityflag = false;
dallas1287 0:7d95a161fefc 46
dallas1287 0:7d95a161fefc 47 int ret;
dallas1287 0:7d95a161fefc 48 // Set Sensor Stream details
dallas1287 0:7d95a161fefc 49 char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to
dallas1287 0:7d95a161fefc 50 char streamtime[] = "Time"; // Stream you want to push to
dallas1287 0:7d95a161fefc 51 char streamfan[] = "Fan_Time";
dallas1287 0:7d95a161fefc 52 char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key
dallas1287 0:7d95a161fefc 53 // Initialize the M2X client
dallas1287 0:7d95a161fefc 54 Client client;
dallas1287 0:7d95a161fefc 55 M2XStreamClient m2xClient(&client, m2xKey);
dallas1287 0:7d95a161fefc 56 Ticker streamticker;
dallas1287 0:7d95a161fefc 57
dallas1287 0:7d95a161fefc 58 void rxinterrupt(MODSERIAL_IRQ_INFO *q)
dallas1287 0:7d95a161fefc 59 {
dallas1287 0:7d95a161fefc 60 btflag = true;
dallas1287 0:7d95a161fefc 61 return;
dallas1287 0:7d95a161fefc 62 }
dallas1287 0:7d95a161fefc 63
dallas1287 0:7d95a161fefc 64 int main()
dallas1287 0:7d95a161fefc 65 {
dallas1287 0:7d95a161fefc 66 motionsensor.disable_irq();
dallas1287 0:7d95a161fefc 67 // Intialize Ethernet connection
dallas1287 0:7d95a161fefc 68
dallas1287 0:7d95a161fefc 69 EthernetInterface eth;
dallas1287 0:7d95a161fefc 70 eth.init();
dallas1287 0:7d95a161fefc 71 eth.connect();
dallas1287 0:7d95a161fefc 72 printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress());
dallas1287 0:7d95a161fefc 73
dallas1287 0:7d95a161fefc 74
dallas1287 0:7d95a161fefc 75 //initialize bluetooth
dallas1287 0:7d95a161fefc 76 HC05.baud(9600);
dallas1287 0:7d95a161fefc 77
dallas1287 0:7d95a161fefc 78 //attach interrupts
dallas1287 0:7d95a161fefc 79 HC05.attach(&rxinterrupt, MODSERIAL::RxIrq);
dallas1287 0:7d95a161fefc 80 motionsensor.rise(&motiontrigger);
dallas1287 0:7d95a161fefc 81 //streamticker.attach(&streamData,1.0);
dallas1287 0:7d95a161fefc 82
dallas1287 0:7d95a161fefc 83 led.write(1); //led initialized to off
dallas1287 0:7d95a161fefc 84
dallas1287 0:7d95a161fefc 85 pc.printf("Program Begins.");
dallas1287 0:7d95a161fefc 86 while (1)
dallas1287 0:7d95a161fefc 87 {
dallas1287 0:7d95a161fefc 88 RxRead();
dallas1287 0:7d95a161fefc 89 streamData();
dallas1287 0:7d95a161fefc 90 wait_ms(100);
dallas1287 0:7d95a161fefc 91 }
dallas1287 0:7d95a161fefc 92
dallas1287 0:7d95a161fefc 93 }
dallas1287 0:7d95a161fefc 94
dallas1287 0:7d95a161fefc 95 void streamData()
dallas1287 0:7d95a161fefc 96 {
dallas1287 0:7d95a161fefc 97 ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total);
dallas1287 0:7d95a161fefc 98 pc.printf("send() returned %d\r\n", ret);
dallas1287 0:7d95a161fefc 99 ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total);
dallas1287 0:7d95a161fefc 100 pc.printf("send() returned %d\r\n", ret);
dallas1287 0:7d95a161fefc 101 }
dallas1287 0:7d95a161fefc 102
dallas1287 0:7d95a161fefc 103 void RxRead(void)
dallas1287 0:7d95a161fefc 104 {
dallas1287 0:7d95a161fefc 105 if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#')
dallas1287 0:7d95a161fefc 106 {
dallas1287 0:7d95a161fefc 107 HC05.move(received, 256);
dallas1287 0:7d95a161fefc 108 pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]);
dallas1287 0:7d95a161fefc 109 wait_ms(5);
dallas1287 0:7d95a161fefc 110 if(received[0] == 'L')
dallas1287 0:7d95a161fefc 111 {
dallas1287 0:7d95a161fefc 112 if(received[2] == 'N')
dallas1287 0:7d95a161fefc 113 {
dallas1287 0:7d95a161fefc 114 led = 0; // toggle led
dallas1287 0:7d95a161fefc 115 ledtimerflag = true;
dallas1287 0:7d95a161fefc 116 }
dallas1287 0:7d95a161fefc 117 else if(received[2] == 'F')
dallas1287 0:7d95a161fefc 118 {
dallas1287 0:7d95a161fefc 119 led = 1;
dallas1287 0:7d95a161fefc 120 ledtimerflag = false;
dallas1287 0:7d95a161fefc 121 }
dallas1287 0:7d95a161fefc 122 }
dallas1287 0:7d95a161fefc 123 else if (received[0] == 'F')
dallas1287 0:7d95a161fefc 124 {
dallas1287 0:7d95a161fefc 125 if(received[3] == 'H')
dallas1287 0:7d95a161fefc 126 {
dallas1287 0:7d95a161fefc 127 fan.write(0.99);
dallas1287 0:7d95a161fefc 128 fantimerflag = true;
dallas1287 0:7d95a161fefc 129 }
dallas1287 0:7d95a161fefc 130 else if(received[3] == 'L')
dallas1287 0:7d95a161fefc 131 {
dallas1287 0:7d95a161fefc 132 fan.write(0.6);
dallas1287 0:7d95a161fefc 133 if(!fantimerflag)
dallas1287 0:7d95a161fefc 134 fantimerflag = true;
dallas1287 0:7d95a161fefc 135 }
dallas1287 0:7d95a161fefc 136 else if(received[3] == 'O')
dallas1287 0:7d95a161fefc 137 {
dallas1287 0:7d95a161fefc 138 fan.write(0.0);
dallas1287 0:7d95a161fefc 139 fantimerflag = false;
dallas1287 0:7d95a161fefc 140 }
dallas1287 0:7d95a161fefc 141 }
dallas1287 0:7d95a161fefc 142 else if(received[0] == 'M')
dallas1287 0:7d95a161fefc 143 {
dallas1287 0:7d95a161fefc 144 if(received[1] == 'R')
dallas1287 0:7d95a161fefc 145 {
dallas1287 0:7d95a161fefc 146 motionsensor.disable_irq();
dallas1287 0:7d95a161fefc 147 }
dallas1287 0:7d95a161fefc 148 else if(received[1] == 'E')
dallas1287 0:7d95a161fefc 149 {
dallas1287 0:7d95a161fefc 150 led = 1; //led off
dallas1287 0:7d95a161fefc 151 fan.write(0.0); //fan off
dallas1287 0:7d95a161fefc 152 MotionSense();
dallas1287 0:7d95a161fefc 153 }
dallas1287 0:7d95a161fefc 154 else if(received[1] == 'S')
dallas1287 0:7d95a161fefc 155 {
dallas1287 0:7d95a161fefc 156 securityflag = true;
dallas1287 0:7d95a161fefc 157 SecurityEnable();
dallas1287 0:7d95a161fefc 158 }
dallas1287 0:7d95a161fefc 159 }
dallas1287 0:7d95a161fefc 160 btflag = false;
dallas1287 0:7d95a161fefc 161
dallas1287 0:7d95a161fefc 162 if(fantimerflag)
dallas1287 0:7d95a161fefc 163 {
dallas1287 0:7d95a161fefc 164 fantimer.start();
dallas1287 0:7d95a161fefc 165 }
dallas1287 0:7d95a161fefc 166 else
dallas1287 0:7d95a161fefc 167 {
dallas1287 0:7d95a161fefc 168 fantimer.stop();
dallas1287 0:7d95a161fefc 169 fan_session = fantimer.read(); //reads the session time
dallas1287 0:7d95a161fefc 170 fan_total += fan_session; // accumulates to total time
dallas1287 0:7d95a161fefc 171 fantimer.reset();
dallas1287 0:7d95a161fefc 172 }
dallas1287 0:7d95a161fefc 173
dallas1287 0:7d95a161fefc 174 if(ledtimerflag)
dallas1287 0:7d95a161fefc 175 {
dallas1287 0:7d95a161fefc 176 ledtimer.start();
dallas1287 0:7d95a161fefc 177 }
dallas1287 0:7d95a161fefc 178 else
dallas1287 0:7d95a161fefc 179 {
dallas1287 0:7d95a161fefc 180 ledtimer.stop();
dallas1287 0:7d95a161fefc 181 led_session = ledtimer.read(); //reads the session time
dallas1287 0:7d95a161fefc 182 led_total += led_session; // accumulates to total time
dallas1287 0:7d95a161fefc 183 ledtimer.reset();
dallas1287 0:7d95a161fefc 184 }
dallas1287 0:7d95a161fefc 185 }
dallas1287 0:7d95a161fefc 186 }
dallas1287 0:7d95a161fefc 187 void TimerRead()
dallas1287 0:7d95a161fefc 188 {
dallas1287 0:7d95a161fefc 189 pc.printf("LED Session Time: %d", led_session);
dallas1287 0:7d95a161fefc 190 pc.printf("\r\nTotal LED Time: %d\r\n", led_total);
dallas1287 0:7d95a161fefc 191 pc.printf("Fan Session Time: %d", fan_session);
dallas1287 0:7d95a161fefc 192 pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total);
dallas1287 0:7d95a161fefc 193 }
dallas1287 0:7d95a161fefc 194
dallas1287 0:7d95a161fefc 195 void MotionSense()
dallas1287 0:7d95a161fefc 196 {
dallas1287 0:7d95a161fefc 197 HC05.puts("Motion Sensor Initializing...");
dallas1287 0:7d95a161fefc 198 ledbounce();
dallas1287 0:7d95a161fefc 199 HC05.puts("Enabled.");
dallas1287 0:7d95a161fefc 200 motionsensor.enable_irq();
dallas1287 0:7d95a161fefc 201 }
dallas1287 0:7d95a161fefc 202
dallas1287 0:7d95a161fefc 203 void SecurityEnable()
dallas1287 0:7d95a161fefc 204 {
dallas1287 0:7d95a161fefc 205 HC05.puts("Security Initializing...");
dallas1287 0:7d95a161fefc 206 ledbounce();
dallas1287 0:7d95a161fefc 207 HC05.puts("Enabled.");
dallas1287 0:7d95a161fefc 208 motionsensor.enable_irq();
dallas1287 0:7d95a161fefc 209 }
dallas1287 0:7d95a161fefc 210
dallas1287 0:7d95a161fefc 211 void SecurityCam()
dallas1287 0:7d95a161fefc 212 {
dallas1287 0:7d95a161fefc 213 securitycam = 1;
dallas1287 0:7d95a161fefc 214 wait_ms(50);
dallas1287 0:7d95a161fefc 215 securitycam = 0;
dallas1287 0:7d95a161fefc 216 }
dallas1287 0:7d95a161fefc 217
dallas1287 0:7d95a161fefc 218 void motiontrigger()
dallas1287 0:7d95a161fefc 219 {
dallas1287 0:7d95a161fefc 220 led = 0;
dallas1287 0:7d95a161fefc 221 //security mode sends pulse to start python script
dallas1287 0:7d95a161fefc 222 if(securityflag)
dallas1287 0:7d95a161fefc 223 {
dallas1287 0:7d95a161fefc 224 SecurityCam();
dallas1287 0:7d95a161fefc 225 securityflag = false; //resets flag
dallas1287 0:7d95a161fefc 226 }
dallas1287 0:7d95a161fefc 227 else
dallas1287 0:7d95a161fefc 228 motionTimeout.attach(&motionTimeOut,10.0);
dallas1287 0:7d95a161fefc 229 }
dallas1287 0:7d95a161fefc 230
dallas1287 0:7d95a161fefc 231 void motionTimeOut()
dallas1287 0:7d95a161fefc 232 {
dallas1287 0:7d95a161fefc 233 led = 1; //led off;
dallas1287 0:7d95a161fefc 234 }
dallas1287 0:7d95a161fefc 235
dallas1287 0:7d95a161fefc 236 void ledbounce()
dallas1287 0:7d95a161fefc 237 {
dallas1287 0:7d95a161fefc 238 for( int i = 0; i < 20; i++)
dallas1287 0:7d95a161fefc 239 {
dallas1287 0:7d95a161fefc 240 led = led ^1;
dallas1287 0:7d95a161fefc 241 wait_ms(100);
dallas1287 0:7d95a161fefc 242 }
dallas1287 0:7d95a161fefc 243 led = 1;
dallas1287 0:7d95a161fefc 244 }
dallas1287 0:7d95a161fefc 245
dallas1287 0:7d95a161fefc 246
dallas1287 0:7d95a161fefc 247 /*#include "mbed.h"
dallas1287 0:7d95a161fefc 248 #include "EthernetInterface.h"
dallas1287 0:7d95a161fefc 249 #include "M2XStreamClient.h"
dallas1287 0:7d95a161fefc 250 #include "MODSERIAL.h"
dallas1287 0:7d95a161fefc 251
dallas1287 0:7d95a161fefc 252 //function declaration
dallas1287 0:7d95a161fefc 253 void TimerRead(void);
dallas1287 0:7d95a161fefc 254 void MotionSense(void);
dallas1287 0:7d95a161fefc 255 void motiontrigger(void);
dallas1287 0:7d95a161fefc 256 void ledbounce(void);
dallas1287 0:7d95a161fefc 257 void RxRead(void);
dallas1287 0:7d95a161fefc 258 void motionTimeOut(void);
dallas1287 0:7d95a161fefc 259 void streamData(void);
dallas1287 0:7d95a161fefc 260 void SecurityCam(void);
dallas1287 0:7d95a161fefc 261 void SecurityEnable(void);
dallas1287 0:7d95a161fefc 262
dallas1287 0:7d95a161fefc 263 //bluetooth variables
dallas1287 0:7d95a161fefc 264 bool btflag = false;
dallas1287 0:7d95a161fefc 265 char received[256] = {""};
dallas1287 0:7d95a161fefc 266 int i = 0;
dallas1287 0:7d95a161fefc 267 //led variables
dallas1287 0:7d95a161fefc 268 int led_total = 0;
dallas1287 0:7d95a161fefc 269 int led_session = 0;
dallas1287 0:7d95a161fefc 270 bool ledtimerflag = false;
dallas1287 0:7d95a161fefc 271 DigitalOut led(LED_RED);
dallas1287 0:7d95a161fefc 272 //fan variables
dallas1287 0:7d95a161fefc 273 int fan_total = 0;
dallas1287 0:7d95a161fefc 274 int fan_session = 0;
dallas1287 0:7d95a161fefc 275 bool fantimerflag = false;
dallas1287 0:7d95a161fefc 276 PwmOut fan(D3);
dallas1287 0:7d95a161fefc 277 //Motion Sensor Variables
dallas1287 0:7d95a161fefc 278 InterruptIn motionsensor(D2);
dallas1287 0:7d95a161fefc 279 DigitalOut motionsensorpwr(D1, 0);
dallas1287 0:7d95a161fefc 280 //Motion Sensor Timeout
dallas1287 0:7d95a161fefc 281 Timeout motionTimeout;
dallas1287 0:7d95a161fefc 282 //Timers Initialization
dallas1287 0:7d95a161fefc 283 Timer ledtimer;
dallas1287 0:7d95a161fefc 284 Timer fantimer;
dallas1287 0:7d95a161fefc 285 // Initialize Serial port
dallas1287 0:7d95a161fefc 286 Serial pc(USBTX, USBRX);
dallas1287 0:7d95a161fefc 287 //bluetooth module declaration
dallas1287 0:7d95a161fefc 288 MODSERIAL HC05(PTC15, PTC14);
dallas1287 0:7d95a161fefc 289 //security camera
dallas1287 0:7d95a161fefc 290 //DigitalOut securitycam(D5, 0);
dallas1287 0:7d95a161fefc 291 bool securityflag = false;
dallas1287 0:7d95a161fefc 292
dallas1287 0:7d95a161fefc 293 int ret;
dallas1287 0:7d95a161fefc 294 // Set Sensor Stream details
dallas1287 0:7d95a161fefc 295 char deviceId[] = "56429e7da76e7b0d282164231db3446e"; // Device you want to push to
dallas1287 0:7d95a161fefc 296 char streamtime[] = "Time"; // Stream you want to push to
dallas1287 0:7d95a161fefc 297 char streamfan[] = "Fan_Time";
dallas1287 0:7d95a161fefc 298 char m2xKey[] = "3f3543d74e384a4c94d71729ffee9277"; // Your M2X API Key or Master API Key
dallas1287 0:7d95a161fefc 299 // Initialize the M2X client
dallas1287 0:7d95a161fefc 300 Client client;
dallas1287 0:7d95a161fefc 301 M2XStreamClient m2xClient(&client, m2xKey);
dallas1287 0:7d95a161fefc 302 Ticker streamticker;
dallas1287 0:7d95a161fefc 303
dallas1287 0:7d95a161fefc 304 void rxinterrupt(MODSERIAL_IRQ_INFO *q)
dallas1287 0:7d95a161fefc 305 {
dallas1287 0:7d95a161fefc 306 btflag = true;
dallas1287 0:7d95a161fefc 307 return;
dallas1287 0:7d95a161fefc 308 }
dallas1287 0:7d95a161fefc 309
dallas1287 0:7d95a161fefc 310 int main()
dallas1287 0:7d95a161fefc 311 {
dallas1287 0:7d95a161fefc 312 motionsensor.disable_irq();
dallas1287 0:7d95a161fefc 313 // Intialize Ethernet connection
dallas1287 0:7d95a161fefc 314
dallas1287 0:7d95a161fefc 315 EthernetInterface eth;
dallas1287 0:7d95a161fefc 316 eth.init();
dallas1287 0:7d95a161fefc 317 eth.connect();
dallas1287 0:7d95a161fefc 318 printf("Success. Connected!. Device IP Address is %s\r\n", eth.getIPAddress());
dallas1287 0:7d95a161fefc 319
dallas1287 0:7d95a161fefc 320
dallas1287 0:7d95a161fefc 321 //initialize bluetooth
dallas1287 0:7d95a161fefc 322 HC05.baud(9600);
dallas1287 0:7d95a161fefc 323
dallas1287 0:7d95a161fefc 324 //attach interrupts
dallas1287 0:7d95a161fefc 325 HC05.attach(&rxinterrupt, MODSERIAL::RxIrq);
dallas1287 0:7d95a161fefc 326 motionsensor.rise(&motiontrigger);
dallas1287 0:7d95a161fefc 327 //streamticker.attach(&streamData,1.0);
dallas1287 0:7d95a161fefc 328
dallas1287 0:7d95a161fefc 329 led.write(1); //led initialized to off
dallas1287 0:7d95a161fefc 330
dallas1287 0:7d95a161fefc 331 pc.printf("Program Begins.");
dallas1287 0:7d95a161fefc 332 while (1)
dallas1287 0:7d95a161fefc 333 {
dallas1287 0:7d95a161fefc 334 RxRead();
dallas1287 0:7d95a161fefc 335 streamData();
dallas1287 0:7d95a161fefc 336 wait_ms(100);
dallas1287 0:7d95a161fefc 337 }
dallas1287 0:7d95a161fefc 338
dallas1287 0:7d95a161fefc 339 }
dallas1287 0:7d95a161fefc 340
dallas1287 0:7d95a161fefc 341 void streamData()
dallas1287 0:7d95a161fefc 342 {
dallas1287 0:7d95a161fefc 343 ret = m2xClient.updateStreamValue(deviceId, streamtime, led_total);
dallas1287 0:7d95a161fefc 344 pc.printf("send() returned %d\r\n", ret);
dallas1287 0:7d95a161fefc 345 ret = m2xClient.updateStreamValue(deviceId, streamfan, fan_total);
dallas1287 0:7d95a161fefc 346 pc.printf("send() returned %d\r\n", ret);
dallas1287 0:7d95a161fefc 347 }
dallas1287 0:7d95a161fefc 348
dallas1287 0:7d95a161fefc 349 void RxRead(void)
dallas1287 0:7d95a161fefc 350 {
dallas1287 0:7d95a161fefc 351 if(btflag && !HC05.rxBufferEmpty() && HC05.rxGetLastChar() == '#')
dallas1287 0:7d95a161fefc 352 {
dallas1287 0:7d95a161fefc 353 HC05.move(received, 256);
dallas1287 0:7d95a161fefc 354 pc.printf("%c%c%c%c%c",received[0], received[1], received[2],received[3], received[4]);
dallas1287 0:7d95a161fefc 355 wait_ms(5);
dallas1287 0:7d95a161fefc 356 if(received[0] == 'L')
dallas1287 0:7d95a161fefc 357 {
dallas1287 0:7d95a161fefc 358 if(received[2] == 'N')
dallas1287 0:7d95a161fefc 359 {
dallas1287 0:7d95a161fefc 360 led = 0; // toggle led
dallas1287 0:7d95a161fefc 361 ledtimerflag = true;
dallas1287 0:7d95a161fefc 362 }
dallas1287 0:7d95a161fefc 363 else if(received[2] == 'F')
dallas1287 0:7d95a161fefc 364 {
dallas1287 0:7d95a161fefc 365 led = 1;
dallas1287 0:7d95a161fefc 366 ledtimerflag = false;
dallas1287 0:7d95a161fefc 367 }
dallas1287 0:7d95a161fefc 368 }
dallas1287 0:7d95a161fefc 369 else if (received[0] == 'F')
dallas1287 0:7d95a161fefc 370 {
dallas1287 0:7d95a161fefc 371 if(received[3] == 'H')
dallas1287 0:7d95a161fefc 372 {
dallas1287 0:7d95a161fefc 373 fan.write(0.99);
dallas1287 0:7d95a161fefc 374 fantimerflag = true;
dallas1287 0:7d95a161fefc 375 }
dallas1287 0:7d95a161fefc 376 else if(received[3] == 'L')
dallas1287 0:7d95a161fefc 377 {
dallas1287 0:7d95a161fefc 378 fan.write(0.6);
dallas1287 0:7d95a161fefc 379 if(!fantimerflag)
dallas1287 0:7d95a161fefc 380 fantimerflag = true;
dallas1287 0:7d95a161fefc 381 }
dallas1287 0:7d95a161fefc 382 else if(received[3] == 'O')
dallas1287 0:7d95a161fefc 383 {
dallas1287 0:7d95a161fefc 384 fan.write(0.0);
dallas1287 0:7d95a161fefc 385 fantimerflag = false;
dallas1287 0:7d95a161fefc 386 }
dallas1287 0:7d95a161fefc 387 }
dallas1287 0:7d95a161fefc 388 else if(received[0] == 'M')
dallas1287 0:7d95a161fefc 389 {
dallas1287 0:7d95a161fefc 390 if(received[1] == 'R')
dallas1287 0:7d95a161fefc 391 {
dallas1287 0:7d95a161fefc 392 motionsensor.disable_irq();
dallas1287 0:7d95a161fefc 393 }
dallas1287 0:7d95a161fefc 394 else if(received[1] == 'E')
dallas1287 0:7d95a161fefc 395 {
dallas1287 0:7d95a161fefc 396 led = 1; //led off
dallas1287 0:7d95a161fefc 397 fan.write(0.0); //fan off
dallas1287 0:7d95a161fefc 398 MotionSense();
dallas1287 0:7d95a161fefc 399 }
dallas1287 0:7d95a161fefc 400 }
dallas1287 0:7d95a161fefc 401 btflag = false;
dallas1287 0:7d95a161fefc 402
dallas1287 0:7d95a161fefc 403 if(fantimerflag)
dallas1287 0:7d95a161fefc 404 {
dallas1287 0:7d95a161fefc 405 fantimer.start();
dallas1287 0:7d95a161fefc 406 }
dallas1287 0:7d95a161fefc 407 else
dallas1287 0:7d95a161fefc 408 {
dallas1287 0:7d95a161fefc 409 fantimer.stop();
dallas1287 0:7d95a161fefc 410 fan_session = fantimer.read(); //reads the session time
dallas1287 0:7d95a161fefc 411 fan_total += fan_session; // accumulates to total time
dallas1287 0:7d95a161fefc 412 fantimer.reset();
dallas1287 0:7d95a161fefc 413 }
dallas1287 0:7d95a161fefc 414
dallas1287 0:7d95a161fefc 415 if(ledtimerflag)
dallas1287 0:7d95a161fefc 416 {
dallas1287 0:7d95a161fefc 417 ledtimer.start();
dallas1287 0:7d95a161fefc 418 }
dallas1287 0:7d95a161fefc 419 else
dallas1287 0:7d95a161fefc 420 {
dallas1287 0:7d95a161fefc 421 ledtimer.stop();
dallas1287 0:7d95a161fefc 422 led_session = ledtimer.read(); //reads the session time
dallas1287 0:7d95a161fefc 423 led_total += led_session; // accumulates to total time
dallas1287 0:7d95a161fefc 424 ledtimer.reset();
dallas1287 0:7d95a161fefc 425 }
dallas1287 0:7d95a161fefc 426 }
dallas1287 0:7d95a161fefc 427 }
dallas1287 0:7d95a161fefc 428 void TimerRead()
dallas1287 0:7d95a161fefc 429 {
dallas1287 0:7d95a161fefc 430 pc.printf("LED Session Time: %d", led_session);
dallas1287 0:7d95a161fefc 431 pc.printf("\r\nTotal LED Time: %d\r\n", led_total);
dallas1287 0:7d95a161fefc 432 pc.printf("Fan Session Time: %d", fan_session);
dallas1287 0:7d95a161fefc 433 pc.printf("\r\nTotal Fan Time: %d\r\n", fan_total);
dallas1287 0:7d95a161fefc 434 }
dallas1287 0:7d95a161fefc 435
dallas1287 0:7d95a161fefc 436 void MotionSense()
dallas1287 0:7d95a161fefc 437 {
dallas1287 0:7d95a161fefc 438 HC05.puts("Motion Sensor Initializing...");
dallas1287 0:7d95a161fefc 439 ledbounce();
dallas1287 0:7d95a161fefc 440 HC05.puts("Enabled.");
dallas1287 0:7d95a161fefc 441 motionsensor.enable_irq();
dallas1287 0:7d95a161fefc 442 }
dallas1287 0:7d95a161fefc 443
dallas1287 0:7d95a161fefc 444 void motiontrigger()
dallas1287 0:7d95a161fefc 445 {
dallas1287 0:7d95a161fefc 446 led = 0;
dallas1287 0:7d95a161fefc 447 motionTimeout.attach(&motionTimeOut,10.0);
dallas1287 0:7d95a161fefc 448 }
dallas1287 0:7d95a161fefc 449
dallas1287 0:7d95a161fefc 450 void motionTimeOut()
dallas1287 0:7d95a161fefc 451 {
dallas1287 0:7d95a161fefc 452 led = 1; //led off;
dallas1287 0:7d95a161fefc 453 }
dallas1287 0:7d95a161fefc 454
dallas1287 0:7d95a161fefc 455 void ledbounce()
dallas1287 0:7d95a161fefc 456 {
dallas1287 0:7d95a161fefc 457 for( int i = 0; i < 20; i++)
dallas1287 0:7d95a161fefc 458 {
dallas1287 0:7d95a161fefc 459 led = led ^1;
dallas1287 0:7d95a161fefc 460 wait_ms(100);
dallas1287 0:7d95a161fefc 461 }
dallas1287 0:7d95a161fefc 462 led = 1;
dallas1287 0:7d95a161fefc 463 }*/