get an input from RFID to control the LCD

Dependencies:   mbed

Fork of LCD4884 by Dan Ghiciulescu

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?

UserRevisionLine numberNew 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 }