Scott Jeong
/
Auto_LED
use to KL25Z. Sensing to PIR and CDS. Control Power LED
main.cpp@0:be8486d83765, 2015-05-30 (annotated)
- Committer:
- nanjsk
- Date:
- Sat May 30 10:11:15 2015 +0000
- Revision:
- 0:be8486d83765
KL25Z, PIR, CDS, LED
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nanjsk | 0:be8486d83765 | 1 | #include "mbed.h" |
nanjsk | 0:be8486d83765 | 2 | Timer t; |
nanjsk | 0:be8486d83765 | 3 | |
nanjsk | 0:be8486d83765 | 4 | DigitalOut ledR0(LED_RED); |
nanjsk | 0:be8486d83765 | 5 | DigitalOut ledG0(LED_GREEN); |
nanjsk | 0:be8486d83765 | 6 | DigitalOut ledB0(LED_BLUE); |
nanjsk | 0:be8486d83765 | 7 | |
nanjsk | 0:be8486d83765 | 8 | DigitalOut led0(D5); |
nanjsk | 0:be8486d83765 | 9 | DigitalOut led1(D6); |
nanjsk | 0:be8486d83765 | 10 | |
nanjsk | 0:be8486d83765 | 11 | DigitalIn PIR(D8); |
nanjsk | 0:be8486d83765 | 12 | AnalogIn CDS(A0); |
nanjsk | 0:be8486d83765 | 13 | |
nanjsk | 0:be8486d83765 | 14 | Serial pc(USBTX, USBRX); |
nanjsk | 0:be8486d83765 | 15 | |
nanjsk | 0:be8486d83765 | 16 | #define PLED_ON led0 = led1 = 1 |
nanjsk | 0:be8486d83765 | 17 | #define PLED_OFF led0 = led1 = 0 |
nanjsk | 0:be8486d83765 | 18 | |
nanjsk | 0:be8486d83765 | 19 | int CDS_data; |
nanjsk | 0:be8486d83765 | 20 | int PIR_sensor; |
nanjsk | 0:be8486d83765 | 21 | |
nanjsk | 0:be8486d83765 | 22 | int CDS_check() |
nanjsk | 0:be8486d83765 | 23 | { |
nanjsk | 0:be8486d83765 | 24 | CDS_data = CDS.read()*1000; |
nanjsk | 0:be8486d83765 | 25 | //CDS_vol = CDS_data*3.3; |
nanjsk | 0:be8486d83765 | 26 | |
nanjsk | 0:be8486d83765 | 27 | if(CDS_data > 600){ |
nanjsk | 0:be8486d83765 | 28 | //ledG0 = 1; |
nanjsk | 0:be8486d83765 | 29 | return 1; |
nanjsk | 0:be8486d83765 | 30 | } |
nanjsk | 0:be8486d83765 | 31 | else { |
nanjsk | 0:be8486d83765 | 32 | //ledG0 = 0; |
nanjsk | 0:be8486d83765 | 33 | return 0; |
nanjsk | 0:be8486d83765 | 34 | } |
nanjsk | 0:be8486d83765 | 35 | } |
nanjsk | 0:be8486d83765 | 36 | |
nanjsk | 0:be8486d83765 | 37 | int PIR_check() |
nanjsk | 0:be8486d83765 | 38 | { |
nanjsk | 0:be8486d83765 | 39 | PIR_sensor = PIR; |
nanjsk | 0:be8486d83765 | 40 | return PIR_sensor; |
nanjsk | 0:be8486d83765 | 41 | } |
nanjsk | 0:be8486d83765 | 42 | |
nanjsk | 0:be8486d83765 | 43 | int main() |
nanjsk | 0:be8486d83765 | 44 | { |
nanjsk | 0:be8486d83765 | 45 | ledR0 = ledG0 = ledB0 = 1; |
nanjsk | 0:be8486d83765 | 46 | PLED_OFF; |
nanjsk | 0:be8486d83765 | 47 | unsigned char flag = 1; |
nanjsk | 0:be8486d83765 | 48 | int csd_int = 2; |
nanjsk | 0:be8486d83765 | 49 | int pir_int0 = 2; |
nanjsk | 0:be8486d83765 | 50 | int pir_int1 = 2; |
nanjsk | 0:be8486d83765 | 51 | int pir_status = 0; |
nanjsk | 0:be8486d83765 | 52 | |
nanjsk | 0:be8486d83765 | 53 | pc.baud(115200); |
nanjsk | 0:be8486d83765 | 54 | wait(0.5f); |
nanjsk | 0:be8486d83765 | 55 | pc.printf("Hello mbed!\n\r"); |
nanjsk | 0:be8486d83765 | 56 | pc.printf("===========================================\n\r"); |
nanjsk | 0:be8486d83765 | 57 | |
nanjsk | 0:be8486d83765 | 58 | while (true) { |
nanjsk | 0:be8486d83765 | 59 | if(CDS_check()){ |
nanjsk | 0:be8486d83765 | 60 | if(csd_int != 0){ |
nanjsk | 0:be8486d83765 | 61 | pc.printf("Dark now.\r\n"); |
nanjsk | 0:be8486d83765 | 62 | csd_int = 0; |
nanjsk | 0:be8486d83765 | 63 | } |
nanjsk | 0:be8486d83765 | 64 | ledG0 = 0; |
nanjsk | 0:be8486d83765 | 65 | flag = 1; |
nanjsk | 0:be8486d83765 | 66 | while(flag){ |
nanjsk | 0:be8486d83765 | 67 | if(PIR_check()){ |
nanjsk | 0:be8486d83765 | 68 | if(pir_int0 != 0){ |
nanjsk | 0:be8486d83765 | 69 | pc.printf("The movement is detected.\r\n"); |
nanjsk | 0:be8486d83765 | 70 | pc.printf("Power LED is turned on.\r\n"); |
nanjsk | 0:be8486d83765 | 71 | pc.printf("===========================================\n\r"); |
nanjsk | 0:be8486d83765 | 72 | pir_int0 = 0; |
nanjsk | 0:be8486d83765 | 73 | } |
nanjsk | 0:be8486d83765 | 74 | t.stop(); |
nanjsk | 0:be8486d83765 | 75 | t.reset(); |
nanjsk | 0:be8486d83765 | 76 | t.start(); |
nanjsk | 0:be8486d83765 | 77 | pir_status = 1; |
nanjsk | 0:be8486d83765 | 78 | ledR0 = 0; |
nanjsk | 0:be8486d83765 | 79 | PLED_ON; |
nanjsk | 0:be8486d83765 | 80 | } |
nanjsk | 0:be8486d83765 | 81 | if(pir_status == 0) { |
nanjsk | 0:be8486d83765 | 82 | flag = 0; |
nanjsk | 0:be8486d83765 | 83 | } |
nanjsk | 0:be8486d83765 | 84 | if(t.read_ms() > 5000 && pir_status == 1){ |
nanjsk | 0:be8486d83765 | 85 | if(pir_int0 != 1){ |
nanjsk | 0:be8486d83765 | 86 | pc.printf("The movement is not detected.\r\n"); |
nanjsk | 0:be8486d83765 | 87 | pc.printf("Power LED is turned off.\r\n"); |
nanjsk | 0:be8486d83765 | 88 | pc.printf("===========================================\n\r"); |
nanjsk | 0:be8486d83765 | 89 | pir_int0 = 1; |
nanjsk | 0:be8486d83765 | 90 | } |
nanjsk | 0:be8486d83765 | 91 | t.stop(); |
nanjsk | 0:be8486d83765 | 92 | t.reset(); |
nanjsk | 0:be8486d83765 | 93 | pir_status = 0; |
nanjsk | 0:be8486d83765 | 94 | ledR0 = 1; |
nanjsk | 0:be8486d83765 | 95 | PLED_OFF; |
nanjsk | 0:be8486d83765 | 96 | flag = 0; |
nanjsk | 0:be8486d83765 | 97 | } |
nanjsk | 0:be8486d83765 | 98 | } |
nanjsk | 0:be8486d83765 | 99 | } |
nanjsk | 0:be8486d83765 | 100 | else{ |
nanjsk | 0:be8486d83765 | 101 | if(csd_int != 1){ |
nanjsk | 0:be8486d83765 | 102 | pc.printf("Brighter now.\r\n"); |
nanjsk | 0:be8486d83765 | 103 | csd_int = 1; |
nanjsk | 0:be8486d83765 | 104 | } |
nanjsk | 0:be8486d83765 | 105 | |
nanjsk | 0:be8486d83765 | 106 | ledG0 = 1; |
nanjsk | 0:be8486d83765 | 107 | if(PIR_check()){ |
nanjsk | 0:be8486d83765 | 108 | if(pir_int1 != 0){ |
nanjsk | 0:be8486d83765 | 109 | pc.printf("The movement is detected.\r\n"); |
nanjsk | 0:be8486d83765 | 110 | pir_int1 = 0; |
nanjsk | 0:be8486d83765 | 111 | } |
nanjsk | 0:be8486d83765 | 112 | ledB0 = 0; |
nanjsk | 0:be8486d83765 | 113 | } |
nanjsk | 0:be8486d83765 | 114 | else{ |
nanjsk | 0:be8486d83765 | 115 | if(pir_int1 != 1){ |
nanjsk | 0:be8486d83765 | 116 | pc.printf("The movement is not detected.\r\n"); |
nanjsk | 0:be8486d83765 | 117 | pir_int1 = 1; |
nanjsk | 0:be8486d83765 | 118 | } |
nanjsk | 0:be8486d83765 | 119 | ledB0 = 1; |
nanjsk | 0:be8486d83765 | 120 | } |
nanjsk | 0:be8486d83765 | 121 | } |
nanjsk | 0:be8486d83765 | 122 | |
nanjsk | 0:be8486d83765 | 123 | //pc.printf("===========================================\n\r"); |
nanjsk | 0:be8486d83765 | 124 | //ledB0 = !ledB0; |
nanjsk | 0:be8486d83765 | 125 | //wait(1); |
nanjsk | 0:be8486d83765 | 126 | } |
nanjsk | 0:be8486d83765 | 127 | } |