
IOT Group work
Dependencies: C12832 LM75B MMA7660 mbed
main.cpp
- Committer:
- co657_jkb30
- Date:
- 2016-01-25
- Revision:
- 0:1e8a4f2f850b
File content as of revision 0:1e8a4f2f850b:
#include "mbed.h" #include "C12832.h" /* for the LCD */ #include "LM75B.h" /* for the temperature sensor */ #include "MMA7660.h" #include "stdio.h" DigitalOut xr_led (LED1); /* red LED */ DigitalOut xg_led (LED2); /* green LED */ DigitalOut xb_led (LED3); /* blue LED */ PwmOut intr_alarm(D6) ; InterruptIn sw2_int (PTC6); /* interrupt for sw2 button on mbed */ InterruptIn sw3_int (PTA4); /* interrupt for sw3 button on mbed */ Serial host (USBTX, USBRX); /* to-host UART via OpenSDAv2 */// MMA7660 MMA(D14, D15); /* accelerometer */ C12832 shld_lcd (D11, D13, D12, D7, D10); /* LCD on the shield (128x32) */ static volatile int triggered = 0; /* variable to decide whether alarm has been triggred */ float x,y,z; /* float variables for acceleromter */ void sw3_interrupt (void) /* this method disarms the motion detector alarm */ { triggered = 0; xr_led = 1; xg_led =1; xb_led =1; shld_lcd.cls(); shld_lcd.locate(0,0); shld_lcd.printf ("Disarmed"); } void sw2_interrupt (void) /* this method checks if the sw2 buttin has been pressed.If so It arsm the motion sendsor */ { if (triggered == 0) { x=MMA.x(); y=MMA.y(); z=MMA.z(); triggered = 1; shld_lcd.cls(); shld_lcd.locate(0,0); shld_lcd.printf ("Armed"); } } /* Main code stars here */ int main (void ) { shld_lcd.printf ("Disarmed"); /* LCD Shows that alarm is initially disarmed */ xr_led = 1; /* LED lights are off to begin with */ xg_led =1; xb_led =1; sw2_int.mode (PullUp); /* */ sw2_int.fall (&sw2_interrupt); sw3_int.mode (PullUp); sw3_int.fall (&sw3_interrupt); while (true) { /* check if there is a difference in acclorometer position */ if (triggered ==1) { /* when armed */ float px = MMA.x(); float py = MMA.y(); float pz = MMA.z(); float diff = abs(x-px) + abs(y-py) + abs(z-pz); if (diff>0.3f) { /* difference check occurs here */ shld_lcd.locate(0,0); shld_lcd.printf ("Intruder Detected"); /* intruduer detected LCD code */ /* Alarm triggered here once intruder has been detected */ while (triggered ==1){ for (float i=2000.0; i<10000.0; i+=100) { float f = i; intr_alarm.period(1.0/f); intr_alarm=0.7; wait(0.005); } /* Different colours for LED when Intruder detected */ intr_alarm=0.0; xr_led = 0; wait(0.5); xr_led = 1; xg_led =0; wait(0.5); /* led particular light colour displays for 0.5 secs */ xg_led =1; xb_led =0; wait(0.5); xb_led =1; } } } } }