IOT Group work

Dependencies:   C12832 LM75B MMA7660 mbed

Committer:
co657_jkb30
Date:
Mon Jan 25 00:47:17 2016 +0000
Revision:
0:1e8a4f2f850b
IOT Group work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
co657_jkb30 0:1e8a4f2f850b 1 #include "mbed.h"
co657_jkb30 0:1e8a4f2f850b 2 #include "C12832.h" /* for the LCD */
co657_jkb30 0:1e8a4f2f850b 3 #include "LM75B.h" /* for the temperature sensor */
co657_jkb30 0:1e8a4f2f850b 4 #include "MMA7660.h"
co657_jkb30 0:1e8a4f2f850b 5 #include "stdio.h"
co657_jkb30 0:1e8a4f2f850b 6
co657_jkb30 0:1e8a4f2f850b 7
co657_jkb30 0:1e8a4f2f850b 8
co657_jkb30 0:1e8a4f2f850b 9 DigitalOut xr_led (LED1); /* red LED */
co657_jkb30 0:1e8a4f2f850b 10 DigitalOut xg_led (LED2); /* green LED */
co657_jkb30 0:1e8a4f2f850b 11 DigitalOut xb_led (LED3); /* blue LED */
co657_jkb30 0:1e8a4f2f850b 12
co657_jkb30 0:1e8a4f2f850b 13
co657_jkb30 0:1e8a4f2f850b 14 PwmOut intr_alarm(D6) ;
co657_jkb30 0:1e8a4f2f850b 15
co657_jkb30 0:1e8a4f2f850b 16 InterruptIn sw2_int (PTC6); /* interrupt for sw2 button on mbed */
co657_jkb30 0:1e8a4f2f850b 17 InterruptIn sw3_int (PTA4); /* interrupt for sw3 button on mbed */
co657_jkb30 0:1e8a4f2f850b 18
co657_jkb30 0:1e8a4f2f850b 19 Serial host (USBTX, USBRX); /* to-host UART via OpenSDAv2 *///
co657_jkb30 0:1e8a4f2f850b 20
co657_jkb30 0:1e8a4f2f850b 21 MMA7660 MMA(D14, D15); /* accelerometer */
co657_jkb30 0:1e8a4f2f850b 22
co657_jkb30 0:1e8a4f2f850b 23 C12832 shld_lcd (D11, D13, D12, D7, D10); /* LCD on the shield (128x32) */
co657_jkb30 0:1e8a4f2f850b 24
co657_jkb30 0:1e8a4f2f850b 25 static volatile int triggered = 0; /* variable to decide whether alarm has been triggred */
co657_jkb30 0:1e8a4f2f850b 26
co657_jkb30 0:1e8a4f2f850b 27
co657_jkb30 0:1e8a4f2f850b 28 float x,y,z; /* float variables for acceleromter */
co657_jkb30 0:1e8a4f2f850b 29
co657_jkb30 0:1e8a4f2f850b 30
co657_jkb30 0:1e8a4f2f850b 31
co657_jkb30 0:1e8a4f2f850b 32 void sw3_interrupt (void) /* this method disarms the motion detector alarm */
co657_jkb30 0:1e8a4f2f850b 33 {
co657_jkb30 0:1e8a4f2f850b 34 triggered = 0;
co657_jkb30 0:1e8a4f2f850b 35 xr_led = 1;
co657_jkb30 0:1e8a4f2f850b 36 xg_led =1;
co657_jkb30 0:1e8a4f2f850b 37 xb_led =1;
co657_jkb30 0:1e8a4f2f850b 38
co657_jkb30 0:1e8a4f2f850b 39 shld_lcd.cls();
co657_jkb30 0:1e8a4f2f850b 40 shld_lcd.locate(0,0);
co657_jkb30 0:1e8a4f2f850b 41 shld_lcd.printf ("Disarmed");
co657_jkb30 0:1e8a4f2f850b 42
co657_jkb30 0:1e8a4f2f850b 43 }
co657_jkb30 0:1e8a4f2f850b 44
co657_jkb30 0:1e8a4f2f850b 45
co657_jkb30 0:1e8a4f2f850b 46 void sw2_interrupt (void) /* this method checks if the sw2 buttin has been pressed.If so It arsm the motion sendsor */
co657_jkb30 0:1e8a4f2f850b 47 {
co657_jkb30 0:1e8a4f2f850b 48 if (triggered == 0) { x=MMA.x();
co657_jkb30 0:1e8a4f2f850b 49 y=MMA.y();
co657_jkb30 0:1e8a4f2f850b 50 z=MMA.z();
co657_jkb30 0:1e8a4f2f850b 51
co657_jkb30 0:1e8a4f2f850b 52 triggered = 1;
co657_jkb30 0:1e8a4f2f850b 53
co657_jkb30 0:1e8a4f2f850b 54 shld_lcd.cls();
co657_jkb30 0:1e8a4f2f850b 55 shld_lcd.locate(0,0);
co657_jkb30 0:1e8a4f2f850b 56 shld_lcd.printf ("Armed");
co657_jkb30 0:1e8a4f2f850b 57
co657_jkb30 0:1e8a4f2f850b 58
co657_jkb30 0:1e8a4f2f850b 59 }
co657_jkb30 0:1e8a4f2f850b 60 }
co657_jkb30 0:1e8a4f2f850b 61
co657_jkb30 0:1e8a4f2f850b 62 /* Main code stars here */
co657_jkb30 0:1e8a4f2f850b 63
co657_jkb30 0:1e8a4f2f850b 64
co657_jkb30 0:1e8a4f2f850b 65
co657_jkb30 0:1e8a4f2f850b 66 int main (void )
co657_jkb30 0:1e8a4f2f850b 67 {
co657_jkb30 0:1e8a4f2f850b 68
co657_jkb30 0:1e8a4f2f850b 69 shld_lcd.printf ("Disarmed"); /* LCD Shows that alarm is initially disarmed */
co657_jkb30 0:1e8a4f2f850b 70
co657_jkb30 0:1e8a4f2f850b 71
co657_jkb30 0:1e8a4f2f850b 72 xr_led = 1; /* LED lights are off to begin with */
co657_jkb30 0:1e8a4f2f850b 73 xg_led =1;
co657_jkb30 0:1e8a4f2f850b 74 xb_led =1;
co657_jkb30 0:1e8a4f2f850b 75
co657_jkb30 0:1e8a4f2f850b 76
co657_jkb30 0:1e8a4f2f850b 77
co657_jkb30 0:1e8a4f2f850b 78 sw2_int.mode (PullUp); /* */
co657_jkb30 0:1e8a4f2f850b 79 sw2_int.fall (&sw2_interrupt);
co657_jkb30 0:1e8a4f2f850b 80
co657_jkb30 0:1e8a4f2f850b 81 sw3_int.mode (PullUp);
co657_jkb30 0:1e8a4f2f850b 82 sw3_int.fall (&sw3_interrupt);
co657_jkb30 0:1e8a4f2f850b 83
co657_jkb30 0:1e8a4f2f850b 84
co657_jkb30 0:1e8a4f2f850b 85 while (true) { /* check if there is a difference in acclorometer position */
co657_jkb30 0:1e8a4f2f850b 86
co657_jkb30 0:1e8a4f2f850b 87 if (triggered ==1) { /* when armed */
co657_jkb30 0:1e8a4f2f850b 88 float px = MMA.x(); float py = MMA.y(); float pz = MMA.z();
co657_jkb30 0:1e8a4f2f850b 89 float diff = abs(x-px) + abs(y-py) + abs(z-pz);
co657_jkb30 0:1e8a4f2f850b 90 if (diff>0.3f) { /* difference check occurs here */
co657_jkb30 0:1e8a4f2f850b 91
co657_jkb30 0:1e8a4f2f850b 92 shld_lcd.locate(0,0);
co657_jkb30 0:1e8a4f2f850b 93 shld_lcd.printf ("Intruder Detected"); /* intruduer detected LCD code */
co657_jkb30 0:1e8a4f2f850b 94
co657_jkb30 0:1e8a4f2f850b 95
co657_jkb30 0:1e8a4f2f850b 96 /* Alarm triggered here once intruder has been detected */
co657_jkb30 0:1e8a4f2f850b 97
co657_jkb30 0:1e8a4f2f850b 98 while (triggered ==1){
co657_jkb30 0:1e8a4f2f850b 99 for (float i=2000.0; i<10000.0; i+=100) {
co657_jkb30 0:1e8a4f2f850b 100 float f = i;
co657_jkb30 0:1e8a4f2f850b 101 intr_alarm.period(1.0/f);
co657_jkb30 0:1e8a4f2f850b 102 intr_alarm=0.7;
co657_jkb30 0:1e8a4f2f850b 103 wait(0.005);
co657_jkb30 0:1e8a4f2f850b 104 }
co657_jkb30 0:1e8a4f2f850b 105
co657_jkb30 0:1e8a4f2f850b 106 /* Different colours for LED when Intruder detected */
co657_jkb30 0:1e8a4f2f850b 107 intr_alarm=0.0;
co657_jkb30 0:1e8a4f2f850b 108 xr_led = 0;
co657_jkb30 0:1e8a4f2f850b 109
co657_jkb30 0:1e8a4f2f850b 110
co657_jkb30 0:1e8a4f2f850b 111 wait(0.5);
co657_jkb30 0:1e8a4f2f850b 112
co657_jkb30 0:1e8a4f2f850b 113 xr_led = 1;
co657_jkb30 0:1e8a4f2f850b 114
co657_jkb30 0:1e8a4f2f850b 115
co657_jkb30 0:1e8a4f2f850b 116
co657_jkb30 0:1e8a4f2f850b 117
co657_jkb30 0:1e8a4f2f850b 118 xg_led =0;
co657_jkb30 0:1e8a4f2f850b 119
co657_jkb30 0:1e8a4f2f850b 120
co657_jkb30 0:1e8a4f2f850b 121 wait(0.5); /* led particular light colour displays for 0.5 secs */
co657_jkb30 0:1e8a4f2f850b 122
co657_jkb30 0:1e8a4f2f850b 123 xg_led =1;
co657_jkb30 0:1e8a4f2f850b 124
co657_jkb30 0:1e8a4f2f850b 125
co657_jkb30 0:1e8a4f2f850b 126
co657_jkb30 0:1e8a4f2f850b 127 xb_led =0;
co657_jkb30 0:1e8a4f2f850b 128
co657_jkb30 0:1e8a4f2f850b 129
co657_jkb30 0:1e8a4f2f850b 130 wait(0.5);
co657_jkb30 0:1e8a4f2f850b 131
co657_jkb30 0:1e8a4f2f850b 132 xb_led =1;
co657_jkb30 0:1e8a4f2f850b 133
co657_jkb30 0:1e8a4f2f850b 134 }
co657_jkb30 0:1e8a4f2f850b 135 }
co657_jkb30 0:1e8a4f2f850b 136
co657_jkb30 0:1e8a4f2f850b 137
co657_jkb30 0:1e8a4f2f850b 138 }
co657_jkb30 0:1e8a4f2f850b 139
co657_jkb30 0:1e8a4f2f850b 140 }
co657_jkb30 0:1e8a4f2f850b 141 }