FRDM-K64F Code Share
/
Pir
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Tue Jul 26 2022 02:07:07 by 1.7.2