Dependencies:   beep mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "beep.h"
00003 
00004 Serial PC(USBTX, USBRX);
00005 
00006 //Sensor
00007 InterruptIn pir(D5);
00008 
00009 //Buttons
00010 InterruptIn on(D7);
00011 InterruptIn off(D6);
00012 
00013 //Buzzer
00014 Beep buzzer(D9);
00015 
00016 int flagOn,flagOff,flagPIR=0;
00017 int i = 0;
00018 int alarmOn=0;  //State (on/off)
00019 
00020 void  onInterrupt() 
00021 {
00022     flagOn=1;
00023 }
00024 
00025 void  offInterrupt()
00026 {
00027     flagOff=1;
00028 }
00029 
00030 void pirInterrupt()
00031 {
00032     flagPIR=1;
00033 }
00034 
00035 int main()
00036 {
00037     // on/off interrupts init          
00038     on.rise(&onInterrupt);
00039     off.rise(&offInterrupt);    
00040     
00041     // pir sensor interrupt init
00042     pir.rise(&pirInterrupt);
00043     
00044     // start
00045     PC.printf("Working... ");
00046     while (1) {
00047         if (flagOn) {
00048             PC.printf("Alarm on ");
00049             alarmOn=1;
00050             flagOn = 0; //clear flag
00051         }
00052         
00053         if (flagOff) {
00054             PC.printf("Alarm off ");
00055             alarmOn=0;
00056             buzzer.beep(0,0); //Frec(Hz),Time(Sec)
00057             flagOff = 0; //clear flag
00058         }
00059 
00060         if (flagPIR) {
00061             if (alarmOn){
00062                 buzzer.beep(1000,10); //Frec(Hz),Time(Sec)
00063             }
00064             flagPIR=0;  //clear flag
00065         }
00066         __wfi(); //waiting for interrupt 
00067     }
00068 }