ticker added

Dependencies:   mbed neopixels_spi

Revision:
0:1c121c73ab08
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 14 02:06:56 2015 +0000
@@ -0,0 +1,758 @@
+#include "mbed.h"
+
+#include "neopixels_spi.h"
+
+neopixels_spi lights;
+Ticker xmas;
+
+Serial xbee(p9,p10); //Initalise xbee_lib
+
+Serial pi(USBTX, USBRX);// Initialse USB serial port
+void mbedReceive(void);
+void modeActivated(void);
+void security(void);
+void brightness(void);
+void colour(void);
+void festive(void);
+void sleep(void);
+void presetBrightness(void);
+void presetColour(void);
+void christmas(void);
+void hunika(void);
+void akwansa(void);
+void rainbow(void);
+void rgbm(void);
+void christmas2(void);
+void hunika2(void);
+void akwansa2(void);
+void rainbow2(void);
+void rgbm2(void);
+
+
+
+//wireless commm dependencies
+void xbee_detect(void);
+void light2(void);
+void light1(void);
+void reed1(void);
+void reed2(void);
+void count1(void);
+void count2(void);
+void count3(void);
+void count4(void);
+void normal_mode(void);
+void normal_mode2(void);
+
+//alarm dependencies
+void alarmP1(void);
+void alarmR1(void);
+void alarmP2(void);
+void alarmR2(void);
+
+void b1(void);
+void b2(void);
+
+
+//ticker stuff
+void xb11(void); 
+void xb12(void);
+
+Ticker xb1;// ticker for room 1 
+Ticker xb2;// ticker for room 2 
+
+int r10=0;//xbee1 pir
+int r20=0;//xbee2pir
+
+
+DigitalOut myled(LED1);
+DigitalOut mled(LED2);
+DigitalOut m3led(LED3);
+DigitalOut m4led(LED4);
+
+int xbee1 = 104;// reed switches
+int xbee2 = 45; // PIR
+int xbee3 = 76;// reed switches
+int xbee4 = 69;// PIR
+
+
+short counter1 = 0;
+short counter2 = 0;
+short counter3 = 0;
+short counter4 = 0;
+int readAddress = 0;
+int readValue=0;
+
+PwmOut buzzer(p21);
+float frequency[]= {659,554};  //frequency array for both sound and LED (Taken from the mbed website)
+float beat[]= {1,1}; //beat array for both sound and LED
+
+//RSP packets dependencies
+int room=0;
+int mode=0;
+int red=0;
+int green=0;
+int blue=0;
+
+//lights mode dependencies 
+int rg[8][3] = {{255,0,0},{0,255,0},{255,0,0},{0,255,0},{255,0,0},{0,255,0},{255,0,0},{0,225,0}};
+int gr[8][3] = {{0,255,0},{255,0,0},{0,255,0},{255,0,0},{0,255,0},{255,0,0},{0,225,0},{255,0,0}};
+
+int bw[8][3] = {{0,0,255},{255,255,255},{0,0,255},{255,255,255},{0,0,255},{255,255,255},{0,0,255},{255,255,255}};
+int wb[8][3] = {{255,255,255},{0,0,255},{255,255,255},{0,0,255},{255,255,255},{0,0,255},{255,255,255},{0,0,255}};
+
+int rgb[8][3] = {{255,0,0},{0,255,0},{0,0,255},{255,0,0},{0,255,0},{0,0,255},{255,0,0},{0,255,0}};
+int brg[8][3] = {{0,0,255},{255,0,0},{0,255,0},{0,0,255},{255,0,0},{0,255,0},{0,0,255},{255,0,0}};
+int gbr[8][3] = {{0,255,0},{0,0,255},{255,0,0},{0,255,0},{0,0,255},{255,0,0},{0,255,0},{0,0,255}};
+int bgr[8][3] = {{0,0,255},{0,255,0},{255,0,0},{0,0,255},{0,255,0},{255,0,0},{0,0,255},{0,255,0}};
+
+int ak1[8][3] = {{255,0,0},{0,255,0},{0,0,0},{255,0,0},{0,255,0},{0,0,0},{255,0,0},{0,255,0}};
+int ak2[8][3] = {{0,0,0},{255,0,0},{0,255,0},{0,0,0},{255,0,0},{0,255,0},{0,0,0},{255,0,0}};
+int ak3[8][3] = {{0,255,0},{0,0,0},{255,0,0},{0,255,0},{0,0,0},{255,0,0},{0,255,0},{0,0,0}};
+int ak4[8][3] = {{0,0,0},{0,255,0},{255,0,0},{0,0,0},{0,255,0},{255,0,0},{0,0,0},{0,255,0}};
+
+int ra1[8][3] = {{255,0,0},{255,165,0},{255,255,0},{255,255,255},{0,255,0},{0,0,255},{75,0,255},{238,130,238}};
+int ra2[8][3] = {{255,165,0},{255,255,0},{255,255,255},{0,255,0},{0,0,255},{75,0,255},{238,130,238},{255,0,0}};
+int ra3[8][3] = {{255,255,0},{255,255,255},{0,255,0},{0,0,255},{75,0,255},{238,130,238},{255,0,0},{255,165,0}};
+int ra4[8][3] = {{255,255,255},{0,255,0},{0,0,255},{75,0,255},{238,130,238},{255,0,0},{255,165,0},{255,255,0}};
+int ra5[8][3] = {{0,255,0},{0,0,255},{75,0,255},{238,130,238},{255,0,0},{255,165,0},{255,255,0},{255,255,255}};
+int ra6[8][3] = {{0,0,255},{75,0,255},{238,130,238},{255,0,0},{255,165,0},{255,255,0},{255,255,255},{0,255,0}};
+int ra7[8][3] = {{75,0,255},{238,130,238},{255,0,0},{255,165,0},{255,255,0},{255,255,255},{0,255,0},{0,0,255}};
+int ra8[8][3] = {{238,130,238},{255,0,0},{255,165,0},{255,255,0},{255,255,255},{0,255,0},{0,0,255},{75,0,255}};
+
+
+int main() {
+    xmas.attach(&mbedReceive, 1.0);
+    while(1) {
+        if(pi.readable()){
+         modeActivated();
+         //mbedReceive();   
+            }
+     xbee_detect();
+     if(r10 ==0){
+        xb1.attach(&xb11, 0.05); 
+        }
+    if(r20 ==0){
+        xb2.attach(&xb12, 0.05); 
+        }
+    if(r10 ==1){
+        xb1.detach(); 
+        }
+    if(r20 ==1){
+        xb2.detach(); 
+        }
+    }
+}
+
+void xb11(void){
+     normal_mode();
+}
+
+void xb12(void){
+     normal_mode2();
+}
+
+// function to receive stuff from pi 
+void mbedReceive(void){
+    int section = pi.getc();
+    if (section==1){
+        security(); //activate security mode
+        r20=1;
+        r10=1;
+        }
+    else if (section==2){
+        room = pi.getc();
+        mode = pi.getc();
+        red = pi.getc();
+        green = pi.getc();
+        blue = pi.getc();
+        r20=1;
+        r10=1;
+        }
+    else if (section==0){
+        //normal lights function a way of stopping different light modes
+        // b2() stop alarm
+        r20=0;
+        r10=0;
+        room = pi.getc();
+        if (room==1){
+        r10=0;
+            //normal mode 1
+            }
+        else if (room==2){
+            r20=0;
+            //normal mode 2
+            }
+        
+        }
+    }
+    
+void modeActivated(void){
+    mbedReceive(); 
+     if (mode==1){
+      brightness();
+        }
+     if (mode==2){
+      colour();
+        }
+     if (mode==3){
+      festive();
+        } 
+     if (mode==4){
+      sleep();
+        }
+     if (mode==5){
+     presetBrightness();
+        }
+     if (mode==6){
+      presetColour();
+        }
+            
+    }
+
+ void security(void){
+     
+     }
+
+void brightness(void){
+    if (room==1){
+        r10=1;
+       lights.setRGBStrip1(red, red, red);
+        }
+     if (room==2){
+      r20=1;
+      lights.setRGBStrip2(red, red, red);
+        }
+    }
+void colour(void){
+    if (room==1){
+        r10=1;
+     lights.setRGBStrip1(red, green, blue);
+        }
+     if (room==2){
+         r20=1;
+     lights.setRGBStrip2(red, green, blue);
+        }
+    
+    }
+void festive(void){
+    if (room==1){
+        r10=1;
+        if(red==1){
+         christmas();  
+        }
+        if(red==2){
+         hunika();   
+        }
+        if(red==3){
+         akwansa();   
+        }
+        if(red==4){
+         rainbow();   
+        }
+        if(red==5){
+         rgbm();   
+        }
+        }
+     else if (room==2){
+        r20=1;
+        if(red==1){
+         
+         christmas2();   
+        }
+        if(red==2){
+         hunika2();   
+        }
+        if(red==3){
+         akwansa2();   
+        }
+        if(red==4){
+         rainbow2();   
+        }
+        if(red==5){
+         rgbm2();   
+        }
+        }
+    }
+void sleep(void){
+    if (room==1){
+        r10=1;
+     //  setRGBStrip1(red, green, blue); sleep pattern for strip1
+        }
+     if (room==2){
+         r20=1;
+     //  setRGBStrip2(red, green, blue);sleep pattern for strip1
+        }
+    }
+void presetBrightness(void){
+    
+    }
+void presetColour(void){
+    
+    }
+    
+//xmas red & green 
+void christmas(void){
+    lights.setRGBPixels1(rg);
+      wait(1);
+    lights.setRGBPixels1(gr);
+      wait(1);
+    lights.setRGBPixels1(rg);
+      wait(1);
+    lights.setRGBPixels1(gr);
+      wait(1);
+    lights.setRGBPixels1(rg);
+      wait(1);
+    lights.setRGBPixels1(gr);
+      wait(1);
+    lights.setRGBPixels1(rg);
+      wait(1);
+    lights.setRGBPixels1(gr);
+      wait(1);
+    lights.setRGBPixels1(rg);
+      wait(1);
+    lights.setRGBPixels1(gr);
+      wait(1);
+    lights.setRGBStrip1(255, 0, 0);
+         wait(1);
+    lights.setRGBStrip1(0,255,0);
+         wait(1);
+    }
+void hunika(void){
+     lights.setRGBPixels1(bw);
+      wait(1);
+     lights.setRGBPixels1(wb);
+      wait(1);
+      lights.setRGBPixels1(bw);
+      wait(1);
+     lights.setRGBPixels1(wb);
+      wait(1);
+      lights.setRGBPixels1(bw);
+      wait(1);
+     lights.setRGBPixels1(wb);
+      wait(1);
+      lights.setRGBPixels1(bw);
+      wait(1);
+     lights.setRGBPixels1(wb);
+      wait(1);
+      lights.setRGBPixels1(bw);
+      wait(1);
+     lights.setRGBPixels1(wb);
+      wait(1);
+     lights.setRGBStrip1(0, 0, 255);
+         wait(1);
+    lights.setRGBStrip1(255,255,255);
+         wait(1);
+    }
+    
+void akwansa(void){
+    lights.setRGBPixels1(ak1);
+      wait(1);
+     lights.setRGBPixels1(ak2);
+      wait(1);
+      lights.setRGBPixels1(ak3);
+      wait(1);
+     lights.setRGBPixels1(ak4);
+      wait(1);
+      lights.setRGBPixels1(ak1);
+      wait(1);
+     lights.setRGBPixels1(ak2);
+      wait(1);
+      lights.setRGBPixels1(ak3);
+      wait(1);
+     lights.setRGBPixels1(ak4);
+      wait(1);
+      lights.setRGBPixels1(ak1);
+      wait(1);
+     lights.setRGBPixels1(ak2);
+      wait(1);
+      lights.setRGBPixels1(ak3);
+      wait(1);
+     lights.setRGBPixels1(ak4);
+      wait(1);
+    }
+void rainbow(void){
+     lights.setRGBPixels1(ra1);
+      wait(1);
+     lights.setRGBPixels1(ra2);
+      wait(1);
+      lights.setRGBPixels1(ra3);
+      wait(1);
+     lights.setRGBPixels1(ra4);
+      wait(1);
+      lights.setRGBPixels1(ra5);
+      wait(1);
+     lights.setRGBPixels1(ra6);
+      wait(1);
+      lights.setRGBPixels1(ra7);
+      wait(1);
+     lights.setRGBPixels1(ra8);
+      wait(1);
+    }
+    
+void rgbm(void){
+    lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+      lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+      lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+      lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+      lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+      lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+     lights.setRGBStrip2(255, 0, 0);
+         wait(1);
+    lights.setRGBStrip2(0,255,0);
+         wait(1);
+    lights.setRGBStrip2(0,0,255);
+         wait(1);
+    }
+    
+void christmas2(void){
+    lights.setRGBPixels2(rg);
+      wait(1);
+     lights.setRGBPixels2(gr);
+      wait(1);
+      lights.setRGBPixels2(rg);
+      wait(1);
+     lights.setRGBPixels2(gr);
+      wait(1);
+      lights.setRGBPixels2(rg);
+      wait(1);
+     lights.setRGBPixels2(gr);
+      wait(1);
+      lights.setRGBPixels2(rg);
+      wait(1);
+     lights.setRGBPixels2(gr);
+      wait(1);
+      lights.setRGBPixels2(rg);
+      wait(1);
+     lights.setRGBPixels2(gr);
+      wait(1);
+     lights.setRGBStrip2(255, 0, 0);
+         wait(1);
+    lights.setRGBStrip2(0,255,0);
+         wait(1);
+    }
+    
+void hunika2(void){
+     lights.setRGBPixels2(bw);
+      wait(1);
+     lights.setRGBPixels2(wb);
+      wait(1);
+      lights.setRGBPixels2(bw);
+      wait(1);
+     lights.setRGBPixels2(wb);
+      wait(1);
+      lights.setRGBPixels2(bw);
+      wait(1);
+     lights.setRGBPixels2(wb);
+      wait(1);
+      lights.setRGBPixels2(bw);
+      wait(1);
+     lights.setRGBPixels2(wb);
+      wait(1);
+      lights.setRGBPixels2(bw);
+      wait(1);
+     lights.setRGBPixels2(wb);
+      wait(1);
+     lights.setRGBStrip2(0, 0, 255);
+         wait(1);
+    lights.setRGBStrip2(255,255,255);
+         wait(1);
+    }
+    
+void akwansa2(void){
+    lights.setRGBPixels2(ak1);
+      wait(1);
+     lights.setRGBPixels2(ak2);
+      wait(1);
+      lights.setRGBPixels2(ak3);
+      wait(1);
+     lights.setRGBPixels2(ak4);
+      wait(1);
+      lights.setRGBPixels2(ak1);
+      wait(1);
+     lights.setRGBPixels2(ak2);
+      wait(1);
+      lights.setRGBPixels2(ak3);
+      wait(1);
+     lights.setRGBPixels2(ak4);
+      wait(1);
+      lights.setRGBPixels2(ak1);
+      wait(1);
+     lights.setRGBPixels2(ak2);
+      wait(1);
+      lights.setRGBPixels2(ak3);
+      wait(1);
+     lights.setRGBPixels2(ak4);
+      wait(1);
+    }
+    
+    
+void rainbow2(void){
+     lights.setRGBPixels2(ra1);
+      wait(1);
+     lights.setRGBPixels2(ra2);
+      wait(1);
+      lights.setRGBPixels2(ra3);
+      wait(1);
+     lights.setRGBPixels2(ra4);
+      wait(1);
+      lights.setRGBPixels2(ra5);
+      wait(1);
+     lights.setRGBPixels2(ra6);
+      wait(1);
+      lights.setRGBPixels2(ra7);
+      wait(1);
+     lights.setRGBPixels2(ra8);
+      wait(1);
+    }
+    
+    
+void rgbm2(void){
+    lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+      lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+      lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+      lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+     lights.setRGBPixels2(rgb);
+      wait(1);
+     lights.setRGBPixels2(brg);
+      wait(1);
+     lights.setRGBPixels2(gbr);
+      wait(1);
+     lights.setRGBPixels2(bgr);
+      wait(1);
+     lights.setRGBStrip2(255, 0, 0);
+         wait(1);
+    lights.setRGBStrip2(0,255,0);
+         wait(1);
+    lights.setRGBStrip2(0,0,255);
+         wait(1);
+    }
+
+void xbee_detect(void){
+    if (xbee.getc() == 0x7E) {
+        for (int i = 0; i < 19; i++) {
+            if (i<10){
+                int discard = xbee.getc();
+            }
+            else if (i<11){
+                readAddress = xbee.getc();
+            }
+            else{
+                int discarded = xbee.getc();
+            }
+        }
+        readValue = xbee.getc();
+    }
+}
+    //lights room1
+void light1(void){
+     if ( readAddress == xbee2){
+        if (readValue == 0){
+            counter2++;
+            count2();
+    }
+    else if(readValue == 16){
+            counter2 = 0;
+          lights.setRGBStrip1(127,127,127);
+           // wait(2);//mled = 1;
+            }
+    }
+}
+    //room 2
+void light2(void){
+      if ( readAddress == xbee4){
+        if (readValue == 0){
+            counter4++;
+            count4();
+           
+        }
+    
+    else if(readValue == 16){
+            counter4 = 0;
+             lights.setRGBStrip2(127,127,127);
+    }
+    }
+}
+
+void reed1(void){
+    if( readAddress == xbee1){
+        if (readValue == 0){
+            //counter1++;
+          //  count1();
+          b2(); 
+    }
+    else if(readValue == 16){
+        counter1 = 0;
+       // myled = 1;
+       b1(); 
+    }
+    }
+}
+    //room 2
+void reed2(void){
+   if ( readAddress == xbee3){
+        if (readValue == 0){
+            //counter3++;
+            //count3();
+            b2(); 
+    }
+    else if(readValue == 16){
+            //counter3 = 0;
+           // m3led = 1;
+           b1(); 
+    }
+}
+}
+
+void count1(void){
+     if(counter1==10){
+                myled = 0;
+                counter1 = 0;
+            }
+    }
+void count3(void){
+     if(counter3==10){
+                m3led = 0;
+                counter1 = 0;
+            }
+    }
+
+//lights count 
+void count2(void){
+     if(counter2==150){
+                   lights.setRGBStrip1(0,0,0);
+                    counter2 = 0;
+        }
+    }
+
+void count4(void){
+     if(counter4==150){
+                   lights.setRGBStrip2(0,0,0);
+                    counter2 = 0;
+        }
+    }
+
+void b1(void){  
+    for (int i=0; i<=1; i++) {
+                buzzer.period(1/(frequency[i])); // set PWM period
+                buzzer=0; // set duty cycle
+                //wait(0.1*beat[i]); // hold for beat period
+               // myled = 1;
+                
+          }
+    }
+    
+void b2(void){  
+    for (int i=0; i<=1; i++) {
+                buzzer.period(1/(frequency[i])); // set PWM period
+                buzzer=0.9; // set duty cycle
+                //wait(0.1*beat[i]); // hold for beat period
+               // myled = 1;
+                
+          }
+    }
+
+void normal_mode(void){
+       // light2();
+        light1();
+        reed1();
+        //reed2();
+    }
+    
+void normal_mode2(void){
+        light2();
+        //light1();
+        //reed1();
+        reed2();
+    }
+
+
+// Alarm Dependencies
+void alarmP1(void){
+     if ( readAddress == xbee2){
+        if (readValue == 0){
+            counter2++;
+            count2();
+    }
+    else if(readValue == 16){
+            counter2 = 0;
+          lights.setRGBStrip1(127,127,127);
+          b2();
+           // wait(2);//mled = 1;
+            }
+    }
+}
+    //room 2
+void alarmP2(void){
+      if ( readAddress == xbee4){
+        if (readValue == 0){
+            counter4++;
+            count4();  
+        }
+    
+    else if(readValue == 16){
+            counter4 = 0;
+             lights.setRGBStrip2(127,127,127);
+             b2();
+    }
+    }
+}
+
+void alarmR1(void){
+    if( readAddress == xbee1){
+        if (readValue == 0){
+            //counter1++;
+          //  count1();
+          b2(); 
+    }
+    else if(readValue == 16){
+        counter1 = 0;
+       // myled = 1;
+       //b1(); 
+    }
+    }
+}
+    //room 2
+void alarmR2(void){
+   if ( readAddress == xbee3){
+        if (readValue == 0){
+            //counter3++;
+            //count3();
+            b2(); 
+    }
+    else if(readValue == 16){
+            //counter3 = 0;
+           // m3led = 1;
+          // b1(); 
+    }
+}
+}
\ No newline at end of file