Pinmanee Truz
/
LCD4884_and_LCD5110
get an input from RFID to control the LCD
Fork of LCD4884 by
main.cpp@1:baf91b6482eb, 2017-12-10 (annotated)
- Committer:
- Pinmanee
- Date:
- Sun Dec 10 16:17:13 2017 +0000
- Revision:
- 1:baf91b6482eb
- Child:
- 2:fb07a736e132
??? RFID ??????? ??????????????????????? Sensor ?????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Pinmanee | 1:baf91b6482eb | 1 | #include "mbed.h" |
Pinmanee | 1:baf91b6482eb | 2 | #include "LCD4884.h" |
Pinmanee | 1:baf91b6482eb | 3 | #include "MFRC522.h" |
Pinmanee | 1:baf91b6482eb | 4 | |
Pinmanee | 1:baf91b6482eb | 5 | #define MF_RESET D8 |
Pinmanee | 1:baf91b6482eb | 6 | #define SPI_CS D10 |
Pinmanee | 1:baf91b6482eb | 7 | |
Pinmanee | 1:baf91b6482eb | 8 | int ReadRFID(); |
Pinmanee | 1:baf91b6482eb | 9 | |
Pinmanee | 1:baf91b6482eb | 10 | //LCD |
Pinmanee | 1:baf91b6482eb | 11 | AnalogIn analog_button_select(A0); |
Pinmanee | 1:baf91b6482eb | 12 | AnalogIn analog_button_press(A1); |
Pinmanee | 1:baf91b6482eb | 13 | AnalogIn analog_button_alarm(A2); |
Pinmanee | 1:baf91b6482eb | 14 | LCD4884 p; |
Pinmanee | 1:baf91b6482eb | 15 | //Serial pc(D1 , D0); |
Pinmanee | 1:baf91b6482eb | 16 | |
Pinmanee | 1:baf91b6482eb | 17 | //RFID |
Pinmanee | 1:baf91b6482eb | 18 | DigitalOut LedGreen(LED1); |
Pinmanee | 1:baf91b6482eb | 19 | Serial pc(SERIAL_TX, SERIAL_RX); |
Pinmanee | 1:baf91b6482eb | 20 | MFRC522 RfChip (PC_12, PC_11, PC_10, SPI_CS, MF_RESET); |
Pinmanee | 1:baf91b6482eb | 21 | |
Pinmanee | 1:baf91b6482eb | 22 | |
Pinmanee | 1:baf91b6482eb | 23 | int main(void) |
Pinmanee | 1:baf91b6482eb | 24 | { |
Pinmanee | 1:baf91b6482eb | 25 | p.LCD_init(); |
Pinmanee | 1:baf91b6482eb | 26 | p.LCD_write_string(28,2,"Hello",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 27 | uint8_t state = 0; |
Pinmanee | 1:baf91b6482eb | 28 | double select, press, alarm; |
Pinmanee | 1:baf91b6482eb | 29 | int line, rfid_ID; |
Pinmanee | 1:baf91b6482eb | 30 | |
Pinmanee | 1:baf91b6482eb | 31 | while(1) { |
Pinmanee | 1:baf91b6482eb | 32 | |
Pinmanee | 1:baf91b6482eb | 33 | select = analog_button_select.read(); |
Pinmanee | 1:baf91b6482eb | 34 | press = analog_button_press.read(); |
Pinmanee | 1:baf91b6482eb | 35 | |
Pinmanee | 1:baf91b6482eb | 36 | printf("x = %f\n",select); |
Pinmanee | 1:baf91b6482eb | 37 | |
Pinmanee | 1:baf91b6482eb | 38 | if (state == 0) { // Home Page |
Pinmanee | 1:baf91b6482eb | 39 | p.backlight(0); |
Pinmanee | 1:baf91b6482eb | 40 | p.LCD_write_string(28,2,"Hello",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 41 | printf("I am in home page\n"); |
Pinmanee | 1:baf91b6482eb | 42 | alarm = analog_button_alarm.read(); |
Pinmanee | 1:baf91b6482eb | 43 | rfid_ID = ReadRFID(); |
Pinmanee | 1:baf91b6482eb | 44 | |
Pinmanee | 1:baf91b6482eb | 45 | if (alarm == 0) { // Alarm Page |
Pinmanee | 1:baf91b6482eb | 46 | printf("Alarm detected"); |
Pinmanee | 1:baf91b6482eb | 47 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 48 | state = 2; |
Pinmanee | 1:baf91b6482eb | 49 | } else { |
Pinmanee | 1:baf91b6482eb | 50 | if (rfid_ID == 0) { |
Pinmanee | 1:baf91b6482eb | 51 | printf("Admin detected"); |
Pinmanee | 1:baf91b6482eb | 52 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 53 | state = 1; |
Pinmanee | 1:baf91b6482eb | 54 | } |
Pinmanee | 1:baf91b6482eb | 55 | } |
Pinmanee | 1:baf91b6482eb | 56 | |
Pinmanee | 1:baf91b6482eb | 57 | } |
Pinmanee | 1:baf91b6482eb | 58 | |
Pinmanee | 1:baf91b6482eb | 59 | else if (state == 1) { //Admin Page |
Pinmanee | 1:baf91b6482eb | 60 | p.backlight(1); |
Pinmanee | 1:baf91b6482eb | 61 | p.LCD_write_string(25,0,"Admin",MENU_HIGHLIGHT); |
Pinmanee | 1:baf91b6482eb | 62 | p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 63 | p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 64 | p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 65 | p.LCD_write_string(0,4,"Back",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 66 | |
Pinmanee | 1:baf91b6482eb | 67 | |
Pinmanee | 1:baf91b6482eb | 68 | while(1) { |
Pinmanee | 1:baf91b6482eb | 69 | select = analog_button_select.read(); |
Pinmanee | 1:baf91b6482eb | 70 | press = analog_button_press.read(); |
Pinmanee | 1:baf91b6482eb | 71 | |
Pinmanee | 1:baf91b6482eb | 72 | if (select != 0 && press != 0) { // no press |
Pinmanee | 1:baf91b6482eb | 73 | if (line == 1) { |
Pinmanee | 1:baf91b6482eb | 74 | p.LCD_write_string(25,0,"Admin",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 75 | p.LCD_write_string(0,1,"- Motion Graph",MENU_HIGHLIGHT); //line = 0 |
Pinmanee | 1:baf91b6482eb | 76 | p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 77 | p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 78 | p.LCD_write_string(0,4,"Back",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 79 | } |
Pinmanee | 1:baf91b6482eb | 80 | |
Pinmanee | 1:baf91b6482eb | 81 | else if (line == 2) { |
Pinmanee | 1:baf91b6482eb | 82 | p.LCD_write_string(25,0,"Admin",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 83 | p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 84 | p.LCD_write_string(0,2,"- AC Graph",MENU_HIGHLIGHT); //line = 1 |
Pinmanee | 1:baf91b6482eb | 85 | p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 86 | p.LCD_write_string(0,4,"Back",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 87 | } |
Pinmanee | 1:baf91b6482eb | 88 | |
Pinmanee | 1:baf91b6482eb | 89 | else if (line == 3) { |
Pinmanee | 1:baf91b6482eb | 90 | p.LCD_write_string(25,0,"Admin",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 91 | p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 92 | p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 93 | p.LCD_write_string(0,3,"- LDR Graph",MENU_HIGHLIGHT); //line = 2 |
Pinmanee | 1:baf91b6482eb | 94 | p.LCD_write_string(0,4,"Back",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 95 | } |
Pinmanee | 1:baf91b6482eb | 96 | |
Pinmanee | 1:baf91b6482eb | 97 | else if (line == 4) { |
Pinmanee | 1:baf91b6482eb | 98 | p.LCD_write_string(25,0,"Admin",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 99 | p.LCD_write_string(0,1,"- Motion Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 100 | p.LCD_write_string(0,2,"- AC Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 101 | p.LCD_write_string(0,3,"- LDR Graph",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 102 | p.LCD_write_string(0,4,"Back",MENU_HIGHLIGHT); //line = 3 |
Pinmanee | 1:baf91b6482eb | 103 | } |
Pinmanee | 1:baf91b6482eb | 104 | } |
Pinmanee | 1:baf91b6482eb | 105 | |
Pinmanee | 1:baf91b6482eb | 106 | else if (select == 0) { // channel selecting button (down) |
Pinmanee | 1:baf91b6482eb | 107 | if (line < 4) { |
Pinmanee | 1:baf91b6482eb | 108 | //printf("line = %d\n",line); |
Pinmanee | 1:baf91b6482eb | 109 | line = line + 1; |
Pinmanee | 1:baf91b6482eb | 110 | wait_ms(250); |
Pinmanee | 1:baf91b6482eb | 111 | } else line = 0; |
Pinmanee | 1:baf91b6482eb | 112 | } |
Pinmanee | 1:baf91b6482eb | 113 | |
Pinmanee | 1:baf91b6482eb | 114 | else if (press == 0) { // press button |
Pinmanee | 1:baf91b6482eb | 115 | //printf("i am in\n"); |
Pinmanee | 1:baf91b6482eb | 116 | //printf("line = %d\n",line); |
Pinmanee | 1:baf91b6482eb | 117 | |
Pinmanee | 1:baf91b6482eb | 118 | if(line == 0) { |
Pinmanee | 1:baf91b6482eb | 119 | state = 1; |
Pinmanee | 1:baf91b6482eb | 120 | line = 0; |
Pinmanee | 1:baf91b6482eb | 121 | break; |
Pinmanee | 1:baf91b6482eb | 122 | } else if(line == 1) { |
Pinmanee | 1:baf91b6482eb | 123 | state = 10; |
Pinmanee | 1:baf91b6482eb | 124 | break; |
Pinmanee | 1:baf91b6482eb | 125 | } else if(line == 2) { |
Pinmanee | 1:baf91b6482eb | 126 | state = 11; |
Pinmanee | 1:baf91b6482eb | 127 | break; |
Pinmanee | 1:baf91b6482eb | 128 | } else if(line == 3) { |
Pinmanee | 1:baf91b6482eb | 129 | state = 12; |
Pinmanee | 1:baf91b6482eb | 130 | break; |
Pinmanee | 1:baf91b6482eb | 131 | } else { |
Pinmanee | 1:baf91b6482eb | 132 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 133 | state = 0; |
Pinmanee | 1:baf91b6482eb | 134 | line = 0; |
Pinmanee | 1:baf91b6482eb | 135 | break; |
Pinmanee | 1:baf91b6482eb | 136 | } |
Pinmanee | 1:baf91b6482eb | 137 | } |
Pinmanee | 1:baf91b6482eb | 138 | |
Pinmanee | 1:baf91b6482eb | 139 | } |
Pinmanee | 1:baf91b6482eb | 140 | } |
Pinmanee | 1:baf91b6482eb | 141 | |
Pinmanee | 1:baf91b6482eb | 142 | else if (state == 10) { //Admin Page - Motion Graph |
Pinmanee | 1:baf91b6482eb | 143 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 144 | p.LCD_write_string(7,0,"Motion Graph",MENU_HIGHLIGHT); |
Pinmanee | 1:baf91b6482eb | 145 | wait_ms(250); |
Pinmanee | 1:baf91b6482eb | 146 | |
Pinmanee | 1:baf91b6482eb | 147 | while(1) { |
Pinmanee | 1:baf91b6482eb | 148 | press = analog_button_press.read(); |
Pinmanee | 1:baf91b6482eb | 149 | |
Pinmanee | 1:baf91b6482eb | 150 | if (press == 0) { |
Pinmanee | 1:baf91b6482eb | 151 | printf("press\n"); |
Pinmanee | 1:baf91b6482eb | 152 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 153 | state = 1; |
Pinmanee | 1:baf91b6482eb | 154 | line = 0; |
Pinmanee | 1:baf91b6482eb | 155 | break; |
Pinmanee | 1:baf91b6482eb | 156 | } |
Pinmanee | 1:baf91b6482eb | 157 | } |
Pinmanee | 1:baf91b6482eb | 158 | } |
Pinmanee | 1:baf91b6482eb | 159 | |
Pinmanee | 1:baf91b6482eb | 160 | else if (state == 11) { //Admin Page - Air Conditioner Graph |
Pinmanee | 1:baf91b6482eb | 161 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 162 | p.LCD_write_string(20,0,"AC Graph",MENU_HIGHLIGHT); |
Pinmanee | 1:baf91b6482eb | 163 | wait_ms(250); |
Pinmanee | 1:baf91b6482eb | 164 | |
Pinmanee | 1:baf91b6482eb | 165 | while(1) { |
Pinmanee | 1:baf91b6482eb | 166 | press = analog_button_press.read(); |
Pinmanee | 1:baf91b6482eb | 167 | |
Pinmanee | 1:baf91b6482eb | 168 | if (press == 0) { |
Pinmanee | 1:baf91b6482eb | 169 | printf("press\n"); |
Pinmanee | 1:baf91b6482eb | 170 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 171 | state = 1; |
Pinmanee | 1:baf91b6482eb | 172 | line = 0; |
Pinmanee | 1:baf91b6482eb | 173 | break; |
Pinmanee | 1:baf91b6482eb | 174 | } |
Pinmanee | 1:baf91b6482eb | 175 | } |
Pinmanee | 1:baf91b6482eb | 176 | } |
Pinmanee | 1:baf91b6482eb | 177 | |
Pinmanee | 1:baf91b6482eb | 178 | else if (state == 12) { //Admin Page - LDR Graph |
Pinmanee | 1:baf91b6482eb | 179 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 180 | p.LCD_write_string(17,0,"LDR Graph",MENU_HIGHLIGHT); |
Pinmanee | 1:baf91b6482eb | 181 | wait_ms(250); |
Pinmanee | 1:baf91b6482eb | 182 | |
Pinmanee | 1:baf91b6482eb | 183 | while(1) { |
Pinmanee | 1:baf91b6482eb | 184 | press = analog_button_press.read(); |
Pinmanee | 1:baf91b6482eb | 185 | |
Pinmanee | 1:baf91b6482eb | 186 | if (press == 0) { |
Pinmanee | 1:baf91b6482eb | 187 | printf("press\n"); |
Pinmanee | 1:baf91b6482eb | 188 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 189 | state = 1; |
Pinmanee | 1:baf91b6482eb | 190 | line = 0; |
Pinmanee | 1:baf91b6482eb | 191 | break; |
Pinmanee | 1:baf91b6482eb | 192 | } |
Pinmanee | 1:baf91b6482eb | 193 | } |
Pinmanee | 1:baf91b6482eb | 194 | } |
Pinmanee | 1:baf91b6482eb | 195 | |
Pinmanee | 1:baf91b6482eb | 196 | else if (state == 2) { |
Pinmanee | 1:baf91b6482eb | 197 | p.LCD_clear(); |
Pinmanee | 1:baf91b6482eb | 198 | while(1) { |
Pinmanee | 1:baf91b6482eb | 199 | p.backlight(0); |
Pinmanee | 1:baf91b6482eb | 200 | wait_ms(500); |
Pinmanee | 1:baf91b6482eb | 201 | p.backlight(1); |
Pinmanee | 1:baf91b6482eb | 202 | wait_ms(500); |
Pinmanee | 1:baf91b6482eb | 203 | p.LCD_write_string(25,1,"PEASE",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 204 | p.LCD_write_string(10,3,"TAP ID CARD",MENU_NORMAL); |
Pinmanee | 1:baf91b6482eb | 205 | wait_ms(250); |
Pinmanee | 1:baf91b6482eb | 206 | } |
Pinmanee | 1:baf91b6482eb | 207 | } |
Pinmanee | 1:baf91b6482eb | 208 | |
Pinmanee | 1:baf91b6482eb | 209 | } |
Pinmanee | 1:baf91b6482eb | 210 | } |
Pinmanee | 1:baf91b6482eb | 211 | |
Pinmanee | 1:baf91b6482eb | 212 | int ReadRFID() |
Pinmanee | 1:baf91b6482eb | 213 | { |
Pinmanee | 1:baf91b6482eb | 214 | int data[10]; |
Pinmanee | 1:baf91b6482eb | 215 | int card; |
Pinmanee | 1:baf91b6482eb | 216 | pc.printf("starting...\n"); |
Pinmanee | 1:baf91b6482eb | 217 | |
Pinmanee | 1:baf91b6482eb | 218 | // Init. RC522 Chip |
Pinmanee | 1:baf91b6482eb | 219 | RfChip.PCD_Init(); |
Pinmanee | 1:baf91b6482eb | 220 | |
Pinmanee | 1:baf91b6482eb | 221 | while(true) { |
Pinmanee | 1:baf91b6482eb | 222 | LedGreen != 0; |
Pinmanee | 1:baf91b6482eb | 223 | |
Pinmanee | 1:baf91b6482eb | 224 | // Look for new cards |
Pinmanee | 1:baf91b6482eb | 225 | if(data[0] == 199 && data[1] == 230 &&data[2] == 46 &&data[3] == 0 ) { |
Pinmanee | 1:baf91b6482eb | 226 | //pc.printf(" admin \n"); |
Pinmanee | 1:baf91b6482eb | 227 | data[0] = 0; |
Pinmanee | 1:baf91b6482eb | 228 | data[1] = 0; |
Pinmanee | 1:baf91b6482eb | 229 | data[2] = 0; |
Pinmanee | 1:baf91b6482eb | 230 | data[3] = 0; |
Pinmanee | 1:baf91b6482eb | 231 | card = 0; |
Pinmanee | 1:baf91b6482eb | 232 | return card; |
Pinmanee | 1:baf91b6482eb | 233 | } |
Pinmanee | 1:baf91b6482eb | 234 | if ( ! RfChip.PICC_IsNewCardPresent()) { |
Pinmanee | 1:baf91b6482eb | 235 | wait_ms(500); |
Pinmanee | 1:baf91b6482eb | 236 | continue; |
Pinmanee | 1:baf91b6482eb | 237 | } |
Pinmanee | 1:baf91b6482eb | 238 | |
Pinmanee | 1:baf91b6482eb | 239 | // Select one of the cards |
Pinmanee | 1:baf91b6482eb | 240 | if ( ! RfChip.PICC_ReadCardSerial()) { |
Pinmanee | 1:baf91b6482eb | 241 | wait_ms(500); |
Pinmanee | 1:baf91b6482eb | 242 | continue; |
Pinmanee | 1:baf91b6482eb | 243 | } |
Pinmanee | 1:baf91b6482eb | 244 | |
Pinmanee | 1:baf91b6482eb | 245 | LedGreen = 0; |
Pinmanee | 1:baf91b6482eb | 246 | |
Pinmanee | 1:baf91b6482eb | 247 | // Print Card UID |
Pinmanee | 1:baf91b6482eb | 248 | pc.printf("Card UID: "); |
Pinmanee | 1:baf91b6482eb | 249 | for (uint8_t i = 0; i < RfChip.uid.size; i++) { |
Pinmanee | 1:baf91b6482eb | 250 | data[i] = RfChip.uid.uidByte[i]; |
Pinmanee | 1:baf91b6482eb | 251 | pc.printf("%d ", data[i]); |
Pinmanee | 1:baf91b6482eb | 252 | |
Pinmanee | 1:baf91b6482eb | 253 | } |
Pinmanee | 1:baf91b6482eb | 254 | |
Pinmanee | 1:baf91b6482eb | 255 | //pc.printf("\n\r"); |
Pinmanee | 1:baf91b6482eb | 256 | //pc.printf("\n\r"); |
Pinmanee | 1:baf91b6482eb | 257 | //char data[0]; |
Pinmanee | 1:baf91b6482eb | 258 | //pc.printf(" %X02", data[0]); |
Pinmanee | 1:baf91b6482eb | 259 | //pc.printf(" %s\n", data[0]); |
Pinmanee | 1:baf91b6482eb | 260 | |
Pinmanee | 1:baf91b6482eb | 261 | pc.printf("\n\r"); |
Pinmanee | 1:baf91b6482eb | 262 | } |
Pinmanee | 1:baf91b6482eb | 263 | } |