FRDM-K64F Code Share
/
Pir
main.cpp@0:d010569706bd, 2014-08-06 (annotated)
- Committer:
- lauram
- Date:
- Wed Aug 06 21:14:22 2014 +0000
- Revision:
- 0:d010569706bd
- Child:
- 1:f3758be6979d
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 | 0:d010569706bd | 5 | InterruptIn pir(D5); |
lauram | 0:d010569706bd | 6 | InterruptIn on(D7); |
lauram | 0:d010569706bd | 7 | InterruptIn off(D6); |
lauram | 0:d010569706bd | 8 | Beep buzzer(D9); |
lauram | 0:d010569706bd | 9 | |
lauram | 0:d010569706bd | 10 | int flagOn,flagOff,flagPIR=0; |
lauram | 0:d010569706bd | 11 | int i = 0; |
lauram | 0:d010569706bd | 12 | int alarmOn=0; //State (on/off) |
lauram | 0:d010569706bd | 13 | |
lauram | 0:d010569706bd | 14 | void onInterrupt() |
lauram | 0:d010569706bd | 15 | { |
lauram | 0:d010569706bd | 16 | flagOn=1; |
lauram | 0:d010569706bd | 17 | } |
lauram | 0:d010569706bd | 18 | |
lauram | 0:d010569706bd | 19 | void offInterrupt() |
lauram | 0:d010569706bd | 20 | { |
lauram | 0:d010569706bd | 21 | flagOff=1; |
lauram | 0:d010569706bd | 22 | } |
lauram | 0:d010569706bd | 23 | |
lauram | 0:d010569706bd | 24 | void pirInterrupt() |
lauram | 0:d010569706bd | 25 | { |
lauram | 0:d010569706bd | 26 | flagPIR=1; |
lauram | 0:d010569706bd | 27 | } |
lauram | 0:d010569706bd | 28 | |
lauram | 0:d010569706bd | 29 | int main() |
lauram | 0:d010569706bd | 30 | { |
lauram | 0:d010569706bd | 31 | // on/off interrupts init |
lauram | 0:d010569706bd | 32 | on.rise(&onInterrupt); |
lauram | 0:d010569706bd | 33 | off.rise(&offInterrupt); |
lauram | 0:d010569706bd | 34 | |
lauram | 0:d010569706bd | 35 | // pir sensor interrupt init |
lauram | 0:d010569706bd | 36 | pir.rise(&pirInterrupt); |
lauram | 0:d010569706bd | 37 | |
lauram | 0:d010569706bd | 38 | // start |
lauram | 0:d010569706bd | 39 | PC.printf("Working... "); |
lauram | 0:d010569706bd | 40 | while (1) { |
lauram | 0:d010569706bd | 41 | if (flagOn) { |
lauram | 0:d010569706bd | 42 | PC.printf("Alarm on "); |
lauram | 0:d010569706bd | 43 | alarmOn=1; |
lauram | 0:d010569706bd | 44 | flagOn = 0; //clear flag |
lauram | 0:d010569706bd | 45 | } |
lauram | 0:d010569706bd | 46 | |
lauram | 0:d010569706bd | 47 | if (flagOff) { |
lauram | 0:d010569706bd | 48 | PC.printf("Alarm off "); |
lauram | 0:d010569706bd | 49 | alarmOn=0; |
lauram | 0:d010569706bd | 50 | buzzer.beep(0,0); //Frec(Hz),Time(Sec) |
lauram | 0:d010569706bd | 51 | flagOff = 0; //clear flag |
lauram | 0:d010569706bd | 52 | } |
lauram | 0:d010569706bd | 53 | |
lauram | 0:d010569706bd | 54 | if (flagPIR) { |
lauram | 0:d010569706bd | 55 | if (alarmOn){ |
lauram | 0:d010569706bd | 56 | buzzer.beep(1000,10); //Frec(Hz),Time(Sec) |
lauram | 0:d010569706bd | 57 | } |
lauram | 0:d010569706bd | 58 | flagPIR=0; //clear flag |
lauram | 0:d010569706bd | 59 | } |
lauram | 0:d010569706bd | 60 | __wfi(); //waiting for interrupt |
lauram | 0:d010569706bd | 61 | } |
lauram | 0:d010569706bd | 62 | } |