FRDM-K64F Code Share
/
Pir
main.cpp@1:f3758be6979d, 2014-08-08 (annotated)
- Committer:
- lauram
- Date:
- Fri Aug 08 01:40:17 2014 +0000
- Revision:
- 1:f3758be6979d
- Parent:
- 0:d010569706bd
starting
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lauram | 0:d010569706bd | 1 | #include "mbed.h" |
lauram | 0:d010569706bd | 2 | #include "beep.h" |
lauram | 0:d010569706bd | 3 | |
lauram | 0:d010569706bd | 4 | Serial PC(USBTX, USBRX); |
lauram | 1:f3758be6979d | 5 | |
lauram | 1:f3758be6979d | 6 | //Sensor |
lauram | 0:d010569706bd | 7 | InterruptIn pir(D5); |
lauram | 1:f3758be6979d | 8 | |
lauram | 1:f3758be6979d | 9 | //Buttons |
lauram | 0:d010569706bd | 10 | InterruptIn on(D7); |
lauram | 0:d010569706bd | 11 | InterruptIn off(D6); |
lauram | 1:f3758be6979d | 12 | |
lauram | 1:f3758be6979d | 13 | //Buzzer |
lauram | 0:d010569706bd | 14 | Beep buzzer(D9); |
lauram | 0:d010569706bd | 15 | |
lauram | 0:d010569706bd | 16 | int flagOn,flagOff,flagPIR=0; |
lauram | 0:d010569706bd | 17 | int i = 0; |
lauram | 0:d010569706bd | 18 | int alarmOn=0; //State (on/off) |
lauram | 0:d010569706bd | 19 | |
lauram | 0:d010569706bd | 20 | void onInterrupt() |
lauram | 0:d010569706bd | 21 | { |
lauram | 0:d010569706bd | 22 | flagOn=1; |
lauram | 0:d010569706bd | 23 | } |
lauram | 0:d010569706bd | 24 | |
lauram | 0:d010569706bd | 25 | void offInterrupt() |
lauram | 0:d010569706bd | 26 | { |
lauram | 0:d010569706bd | 27 | flagOff=1; |
lauram | 0:d010569706bd | 28 | } |
lauram | 0:d010569706bd | 29 | |
lauram | 0:d010569706bd | 30 | void pirInterrupt() |
lauram | 0:d010569706bd | 31 | { |
lauram | 0:d010569706bd | 32 | flagPIR=1; |
lauram | 0:d010569706bd | 33 | } |
lauram | 0:d010569706bd | 34 | |
lauram | 0:d010569706bd | 35 | int main() |
lauram | 0:d010569706bd | 36 | { |
lauram | 0:d010569706bd | 37 | // on/off interrupts init |
lauram | 0:d010569706bd | 38 | on.rise(&onInterrupt); |
lauram | 0:d010569706bd | 39 | off.rise(&offInterrupt); |
lauram | 0:d010569706bd | 40 | |
lauram | 0:d010569706bd | 41 | // pir sensor interrupt init |
lauram | 0:d010569706bd | 42 | pir.rise(&pirInterrupt); |
lauram | 0:d010569706bd | 43 | |
lauram | 0:d010569706bd | 44 | // start |
lauram | 0:d010569706bd | 45 | PC.printf("Working... "); |
lauram | 0:d010569706bd | 46 | while (1) { |
lauram | 0:d010569706bd | 47 | if (flagOn) { |
lauram | 0:d010569706bd | 48 | PC.printf("Alarm on "); |
lauram | 0:d010569706bd | 49 | alarmOn=1; |
lauram | 0:d010569706bd | 50 | flagOn = 0; //clear flag |
lauram | 0:d010569706bd | 51 | } |
lauram | 0:d010569706bd | 52 | |
lauram | 0:d010569706bd | 53 | if (flagOff) { |
lauram | 0:d010569706bd | 54 | PC.printf("Alarm off "); |
lauram | 0:d010569706bd | 55 | alarmOn=0; |
lauram | 0:d010569706bd | 56 | buzzer.beep(0,0); //Frec(Hz),Time(Sec) |
lauram | 0:d010569706bd | 57 | flagOff = 0; //clear flag |
lauram | 0:d010569706bd | 58 | } |
lauram | 0:d010569706bd | 59 | |
lauram | 0:d010569706bd | 60 | if (flagPIR) { |
lauram | 0:d010569706bd | 61 | if (alarmOn){ |
lauram | 0:d010569706bd | 62 | buzzer.beep(1000,10); //Frec(Hz),Time(Sec) |
lauram | 0:d010569706bd | 63 | } |
lauram | 0:d010569706bd | 64 | flagPIR=0; //clear flag |
lauram | 0:d010569706bd | 65 | } |
lauram | 0:d010569706bd | 66 | __wfi(); //waiting for interrupt |
lauram | 0:d010569706bd | 67 | } |
lauram | 0:d010569706bd | 68 | } |