LCD & RFID

Dependencies:   TextLCD mbed

Fork of RFID-RC522 by Thomas Kirchner

Committer:
sivanon1996
Date:
Wed Dec 07 04:02:29 2016 +0000
Revision:
3:b2001deb442c
Parent:
2:a0c7513fb634
P12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kirchnet 2:a0c7513fb634 1 #include "mbed.h"
kirchnet 2:a0c7513fb634 2 #include "MFRC522.h"
sivanon1996 3:b2001deb442c 3 #include "TextLCD.h"
sivanon1996 3:b2001deb442c 4 #include "string.h"
kirchnet 2:a0c7513fb634 5 #define MF_RESET D8
sivanon1996 3:b2001deb442c 6 Serial blue(PC_6, D9);
sivanon1996 3:b2001deb442c 7 DigitalOut aaa(D15);
sivanon1996 3:b2001deb442c 8 DigitalOut myled(LED1);
sivanon1996 3:b2001deb442c 9 AnalogIn x(A0);
sivanon1996 3:b2001deb442c 10 AnalogIn y(A1);
sivanon1996 3:b2001deb442c 11 AnalogIn z(A2);
kirchnet 2:a0c7513fb634 12 DigitalOut LedGreen(LED1);
sivanon1996 3:b2001deb442c 13 Serial pc(SERIAL_TX, SERIAL_RX);
sivanon1996 3:b2001deb442c 14 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
sivanon1996 3:b2001deb442c 15 TextLCD lcd(D2, D3, D4, D5, D6, D7, TextLCD::LCD20x4); // rs, e, d4-d7
kirchnet 2:a0c7513fb634 16
sivanon1996 3:b2001deb442c 17 int card_check = 0;
sivanon1996 3:b2001deb442c 18 int i = 0;
sivanon1996 3:b2001deb442c 19 int H = 0;
sivanon1996 3:b2001deb442c 20 float L = 50;
sivanon1996 3:b2001deb442c 21 int card_type = 0;
sivanon1996 3:b2001deb442c 22 int arrow = 0;
sivanon1996 3:b2001deb442c 23 int a,b,c = 0;
sivanon1996 3:b2001deb442c 24 char charID[4];
sivanon1996 3:b2001deb442c 25 char indoor[4] = {'O','F','F'};
sivanon1996 3:b2001deb442c 26 char ON[4] = {'O','N','\0'};
sivanon1996 3:b2001deb442c 27 char OFF[4] = {'O','F','F'};
sivanon1996 3:b2001deb442c 28 char HC[4] = {'\0'};
sivanon1996 3:b2001deb442c 29 char LC[4] = {'\0'};
sivanon1996 3:b2001deb442c 30 int timming = 0;
kirchnet 2:a0c7513fb634 31
sivanon1996 3:b2001deb442c 32 void rfid_check()
sivanon1996 3:b2001deb442c 33 {
sivanon1996 3:b2001deb442c 34
sivanon1996 3:b2001deb442c 35 RfChip.PCD_Init();
sivanon1996 3:b2001deb442c 36
sivanon1996 3:b2001deb442c 37 while (card_type == 0) {
sivanon1996 3:b2001deb442c 38
kirchnet 2:a0c7513fb634 39
sivanon1996 3:b2001deb442c 40 if ( ! RfChip.PICC_IsNewCardPresent()) {
sivanon1996 3:b2001deb442c 41 wait_ms(500);
sivanon1996 3:b2001deb442c 42 continue;
sivanon1996 3:b2001deb442c 43 }
kirchnet 2:a0c7513fb634 44
sivanon1996 3:b2001deb442c 45 if ( ! RfChip.PICC_ReadCardSerial()) {
sivanon1996 3:b2001deb442c 46 wait_ms(500);
sivanon1996 3:b2001deb442c 47 continue;
sivanon1996 3:b2001deb442c 48 }
kirchnet 2:a0c7513fb634 49
sivanon1996 3:b2001deb442c 50 for (uint8_t i = RfChip.uid.size; i >= 1; i--) {
sivanon1996 3:b2001deb442c 51 sprintf(charID, "%X02", RfChip.uid.uidByte[i]);
sivanon1996 3:b2001deb442c 52 }
sivanon1996 3:b2001deb442c 53 pc.printf("\n-%s-\n",charID);
sivanon1996 3:b2001deb442c 54 if (strcmp(charID,"BF02") == 0) {
sivanon1996 3:b2001deb442c 55 lcd.locate(3,2);
sivanon1996 3:b2001deb442c 56 lcd.printf("Hello Master!!");
sivanon1996 3:b2001deb442c 57 card_type = 1;
sivanon1996 3:b2001deb442c 58 blue.printf("i");
sivanon1996 3:b2001deb442c 59 }
kirchnet 2:a0c7513fb634 60
sivanon1996 3:b2001deb442c 61 else if (strcmp(charID,"5D02") == 0) {
sivanon1996 3:b2001deb442c 62 lcd.locate(2,2);
sivanon1996 3:b2001deb442c 63 lcd.printf("Hello Light Man!");
sivanon1996 3:b2001deb442c 64 card_type = 3;
sivanon1996 3:b2001deb442c 65 blue.printf("i");
sivanon1996 3:b2001deb442c 66 }
sivanon1996 3:b2001deb442c 67
sivanon1996 3:b2001deb442c 68 else if (strcmp(charID,"9B02") == 0) {
sivanon1996 3:b2001deb442c 69 lcd.locate(2,2);
sivanon1996 3:b2001deb442c 70 lcd.printf("Hello Pump Man!!");
sivanon1996 3:b2001deb442c 71 card_type = 2;
sivanon1996 3:b2001deb442c 72 blue.printf("i");
sivanon1996 3:b2001deb442c 73
sivanon1996 3:b2001deb442c 74 } else /*if (strcmp(charID,"2E02") == 0)*/ {
sivanon1996 3:b2001deb442c 75 card_type = 4;
sivanon1996 3:b2001deb442c 76 }
kirchnet 2:a0c7513fb634 77 }
kirchnet 2:a0c7513fb634 78
sivanon1996 3:b2001deb442c 79 }
sivanon1996 3:b2001deb442c 80
sivanon1996 3:b2001deb442c 81 void menu()
sivanon1996 3:b2001deb442c 82 {
sivanon1996 3:b2001deb442c 83 blue.printf("a");
sivanon1996 3:b2001deb442c 84 pc.printf("a sended\n");
sivanon1996 3:b2001deb442c 85 for (i = 0; i <= 3 ; i++) {
sivanon1996 3:b2001deb442c 86 HC[i] = blue.getc();
sivanon1996 3:b2001deb442c 87 }
sivanon1996 3:b2001deb442c 88 pc.printf("a got\n");
sivanon1996 3:b2001deb442c 89 blue.printf("b");
sivanon1996 3:b2001deb442c 90 pc.printf("b sended\n");
sivanon1996 3:b2001deb442c 91 for (i = 0; i <= 3 ; i++) {
sivanon1996 3:b2001deb442c 92 LC[i] = blue.getc();
kirchnet 2:a0c7513fb634 93 }
sivanon1996 3:b2001deb442c 94 pc.printf("b got\n");
sivanon1996 3:b2001deb442c 95 lcd.printf(" HUMIDITY = %.*s\n",4,HC);
sivanon1996 3:b2001deb442c 96 lcd.printf(" LIGHT = %.*s\n",4,LC);
sivanon1996 3:b2001deb442c 97 lcd.printf(" LOG OUT\n\n");
sivanon1996 3:b2001deb442c 98 pc.printf("LCD SETING DONE\n");
sivanon1996 3:b2001deb442c 99 }
kirchnet 2:a0c7513fb634 100
sivanon1996 3:b2001deb442c 101 void bb()
sivanon1996 3:b2001deb442c 102 {
sivanon1996 3:b2001deb442c 103 while (true) {
sivanon1996 3:b2001deb442c 104 if (x == 1) {
sivanon1996 3:b2001deb442c 105 a=1;
sivanon1996 3:b2001deb442c 106 while (x >= 0.7) {};
sivanon1996 3:b2001deb442c 107 break;
sivanon1996 3:b2001deb442c 108 }
sivanon1996 3:b2001deb442c 109 if (y == 1) {
sivanon1996 3:b2001deb442c 110 b=1;
sivanon1996 3:b2001deb442c 111 while (y >= 0.7) {};
sivanon1996 3:b2001deb442c 112 break;
sivanon1996 3:b2001deb442c 113 }
sivanon1996 3:b2001deb442c 114 if (z == 1) {
sivanon1996 3:b2001deb442c 115 c=1;
sivanon1996 3:b2001deb442c 116 while (z >= 0.7) {};
sivanon1996 3:b2001deb442c 117 break;
sivanon1996 3:b2001deb442c 118 }
sivanon1996 3:b2001deb442c 119 }
sivanon1996 3:b2001deb442c 120 }
sivanon1996 3:b2001deb442c 121
sivanon1996 3:b2001deb442c 122 void menu_light()
sivanon1996 3:b2001deb442c 123 {
sivanon1996 3:b2001deb442c 124 lcd.cls();
sivanon1996 3:b2001deb442c 125 lcd.printf(" ~~LIGHT~~\n");
sivanon1996 3:b2001deb442c 126 lcd.printf(" INDOOR = %.0f %%\n",L);
sivanon1996 3:b2001deb442c 127 lcd.printf(" OUTDOOR = %s\n",indoor);
sivanon1996 3:b2001deb442c 128 lcd.printf(" BACK\n");
sivanon1996 3:b2001deb442c 129 }
kirchnet 2:a0c7513fb634 130
sivanon1996 3:b2001deb442c 131 int main()
sivanon1996 3:b2001deb442c 132 {
sivanon1996 3:b2001deb442c 133 while (true) {
sivanon1996 3:b2001deb442c 134 for(i=0; i<4; i++) {
sivanon1996 3:b2001deb442c 135 charID[i]='\0';
sivanon1996 3:b2001deb442c 136 }
sivanon1996 3:b2001deb442c 137 timming = 0;
sivanon1996 3:b2001deb442c 138 card_type = 0;
sivanon1996 3:b2001deb442c 139 arrow = 1;
sivanon1996 3:b2001deb442c 140 lcd.cls();
sivanon1996 3:b2001deb442c 141 lcd.printf("\n ^O^ \n\n");
sivanon1996 3:b2001deb442c 142 rfid_check();
sivanon1996 3:b2001deb442c 143 if (card_type == 4) {
sivanon1996 3:b2001deb442c 144 lcd.locate(5,2);
sivanon1996 3:b2001deb442c 145 lcd.printf("WHO ARE U ??");
sivanon1996 3:b2001deb442c 146 timming = 1;
sivanon1996 3:b2001deb442c 147 aaa = 1;
sivanon1996 3:b2001deb442c 148 wait_ms(2000);
sivanon1996 3:b2001deb442c 149 aaa = 0;
sivanon1996 3:b2001deb442c 150 }
sivanon1996 3:b2001deb442c 151 wait_ms(2000);
sivanon1996 3:b2001deb442c 152 while (timming == 0) {
sivanon1996 3:b2001deb442c 153 if (arrow == 1) {
sivanon1996 3:b2001deb442c 154 lcd.cls();
sivanon1996 3:b2001deb442c 155 menu();
sivanon1996 3:b2001deb442c 156 lcd.printf("->");
sivanon1996 3:b2001deb442c 157 bb();
sivanon1996 3:b2001deb442c 158 if (c == 1) {
sivanon1996 3:b2001deb442c 159 arrow = 2;
sivanon1996 3:b2001deb442c 160 c = 0;
sivanon1996 3:b2001deb442c 161 }
sivanon1996 3:b2001deb442c 162 if (b == 1) {
sivanon1996 3:b2001deb442c 163 if(card_type == 2 || card_type == 1) {
sivanon1996 3:b2001deb442c 164 arrow = 4;
sivanon1996 3:b2001deb442c 165 }
sivanon1996 3:b2001deb442c 166 b = 0;
sivanon1996 3:b2001deb442c 167 }
sivanon1996 3:b2001deb442c 168 }
sivanon1996 3:b2001deb442c 169 if (arrow == 2) {
sivanon1996 3:b2001deb442c 170 lcd.cls();
sivanon1996 3:b2001deb442c 171 menu();
sivanon1996 3:b2001deb442c 172 lcd.locate(0,1);
sivanon1996 3:b2001deb442c 173 lcd.printf("->");
sivanon1996 3:b2001deb442c 174 bb();
sivanon1996 3:b2001deb442c 175 if (a == 1) {
sivanon1996 3:b2001deb442c 176 arrow = 1;
sivanon1996 3:b2001deb442c 177 a = 0;
sivanon1996 3:b2001deb442c 178 }
sivanon1996 3:b2001deb442c 179 if (c == 1) {
sivanon1996 3:b2001deb442c 180 arrow = 3;
sivanon1996 3:b2001deb442c 181 c = 0;
sivanon1996 3:b2001deb442c 182 }
sivanon1996 3:b2001deb442c 183 if (b == 1) {
sivanon1996 3:b2001deb442c 184 if(card_type == 3 || card_type == 1) {
sivanon1996 3:b2001deb442c 185 arrow = 5;
sivanon1996 3:b2001deb442c 186 }
sivanon1996 3:b2001deb442c 187 b = 0;
sivanon1996 3:b2001deb442c 188 }
sivanon1996 3:b2001deb442c 189 }
sivanon1996 3:b2001deb442c 190 if (arrow == 3) {
sivanon1996 3:b2001deb442c 191 lcd.cls();
sivanon1996 3:b2001deb442c 192 menu();
sivanon1996 3:b2001deb442c 193 lcd.locate(0,2);
sivanon1996 3:b2001deb442c 194 lcd.printf("->");
sivanon1996 3:b2001deb442c 195 bb();
sivanon1996 3:b2001deb442c 196 if (a == 1) {
sivanon1996 3:b2001deb442c 197 arrow = 2;
sivanon1996 3:b2001deb442c 198 a = 0;
sivanon1996 3:b2001deb442c 199 }
sivanon1996 3:b2001deb442c 200 if (b == 1) {
sivanon1996 3:b2001deb442c 201 b = 0;
sivanon1996 3:b2001deb442c 202 blue.printf("o");
sivanon1996 3:b2001deb442c 203 timming = 1;
sivanon1996 3:b2001deb442c 204 }
sivanon1996 3:b2001deb442c 205 }
sivanon1996 3:b2001deb442c 206 if (arrow == 4) {
sivanon1996 3:b2001deb442c 207 lcd.cls();
sivanon1996 3:b2001deb442c 208 lcd.printf(" ~~HUMIDITY~~\n");
sivanon1996 3:b2001deb442c 209 if (H == 0) {
sivanon1996 3:b2001deb442c 210 lcd.printf(" %s",OFF);
sivanon1996 3:b2001deb442c 211 }
sivanon1996 3:b2001deb442c 212 if (H == 1) {
sivanon1996 3:b2001deb442c 213 lcd.printf(" %s",ON);
sivanon1996 3:b2001deb442c 214 }
sivanon1996 3:b2001deb442c 215 bb();
sivanon1996 3:b2001deb442c 216 if (a == 1) {
sivanon1996 3:b2001deb442c 217 H = 1;
sivanon1996 3:b2001deb442c 218 blue.printf("7");
sivanon1996 3:b2001deb442c 219 a = 0;
sivanon1996 3:b2001deb442c 220 }
sivanon1996 3:b2001deb442c 221 if (c == 1) {
sivanon1996 3:b2001deb442c 222 H = 0;
sivanon1996 3:b2001deb442c 223 blue.printf("4");
sivanon1996 3:b2001deb442c 224 c = 0;
sivanon1996 3:b2001deb442c 225 }
sivanon1996 3:b2001deb442c 226 if (b == 1) {
sivanon1996 3:b2001deb442c 227 arrow = 1;
sivanon1996 3:b2001deb442c 228 b = 0;
sivanon1996 3:b2001deb442c 229 }
sivanon1996 3:b2001deb442c 230 }
sivanon1996 3:b2001deb442c 231 if (arrow == 5) {
sivanon1996 3:b2001deb442c 232 menu_light();
sivanon1996 3:b2001deb442c 233 lcd.locate(0,1);
sivanon1996 3:b2001deb442c 234 lcd.printf("->");
sivanon1996 3:b2001deb442c 235 bb();
sivanon1996 3:b2001deb442c 236 if (c == 1) {
sivanon1996 3:b2001deb442c 237 arrow = 6;
sivanon1996 3:b2001deb442c 238 c = 0;
sivanon1996 3:b2001deb442c 239 }
sivanon1996 3:b2001deb442c 240 if (b == 1) {
sivanon1996 3:b2001deb442c 241 arrow = 51;
sivanon1996 3:b2001deb442c 242 b = 0;
sivanon1996 3:b2001deb442c 243 }
sivanon1996 3:b2001deb442c 244 }
sivanon1996 3:b2001deb442c 245 if (arrow == 6) {
sivanon1996 3:b2001deb442c 246 menu_light();
sivanon1996 3:b2001deb442c 247 lcd.locate(0,2);
sivanon1996 3:b2001deb442c 248 lcd.printf("->");
sivanon1996 3:b2001deb442c 249 bb();
sivanon1996 3:b2001deb442c 250 if (a == 1) {
sivanon1996 3:b2001deb442c 251 arrow = 5;
sivanon1996 3:b2001deb442c 252 a = 0;
sivanon1996 3:b2001deb442c 253 }
sivanon1996 3:b2001deb442c 254 if (b == 1) {
sivanon1996 3:b2001deb442c 255 arrow = 52;
sivanon1996 3:b2001deb442c 256 b = 0;
sivanon1996 3:b2001deb442c 257 }
sivanon1996 3:b2001deb442c 258 if (c == 1) {
sivanon1996 3:b2001deb442c 259 arrow = 7;
sivanon1996 3:b2001deb442c 260 c = 0;
sivanon1996 3:b2001deb442c 261 }
sivanon1996 3:b2001deb442c 262 }
sivanon1996 3:b2001deb442c 263 if (arrow == 7) {
sivanon1996 3:b2001deb442c 264 menu_light();
sivanon1996 3:b2001deb442c 265 lcd.locate(0,3);
sivanon1996 3:b2001deb442c 266 lcd.printf("->");
sivanon1996 3:b2001deb442c 267 bb();
sivanon1996 3:b2001deb442c 268 if (a == 1) {
sivanon1996 3:b2001deb442c 269 arrow = 6;
sivanon1996 3:b2001deb442c 270 a = 0;
sivanon1996 3:b2001deb442c 271 }
sivanon1996 3:b2001deb442c 272 if (b == 1) {
sivanon1996 3:b2001deb442c 273 arrow = 2;
sivanon1996 3:b2001deb442c 274 b = 0;
sivanon1996 3:b2001deb442c 275 }
sivanon1996 3:b2001deb442c 276 }
sivanon1996 3:b2001deb442c 277 if (arrow == 51) {
sivanon1996 3:b2001deb442c 278 lcd.cls();
sivanon1996 3:b2001deb442c 279 lcd.printf(" ~~INDOOR LIGHT~~\n");
sivanon1996 3:b2001deb442c 280 lcd.printf(" %.0f %%\n\n\n",L);
sivanon1996 3:b2001deb442c 281 bb();
sivanon1996 3:b2001deb442c 282 if (a ==1 ) {
sivanon1996 3:b2001deb442c 283 L = L + 5;
sivanon1996 3:b2001deb442c 284 blue.printf("8");
sivanon1996 3:b2001deb442c 285 a = 0;
sivanon1996 3:b2001deb442c 286 }
sivanon1996 3:b2001deb442c 287 if (c == 1 ) {
sivanon1996 3:b2001deb442c 288 L = L - 5;
sivanon1996 3:b2001deb442c 289 blue.printf("5");
sivanon1996 3:b2001deb442c 290 c = 0;
sivanon1996 3:b2001deb442c 291 }
sivanon1996 3:b2001deb442c 292 if (b == 1 ) {
sivanon1996 3:b2001deb442c 293 arrow = 5;
sivanon1996 3:b2001deb442c 294 b = 0;
sivanon1996 3:b2001deb442c 295 }
sivanon1996 3:b2001deb442c 296 }
sivanon1996 3:b2001deb442c 297 if (arrow == 52) {
sivanon1996 3:b2001deb442c 298 lcd.cls();
sivanon1996 3:b2001deb442c 299 lcd.printf(" ~~OUTDOOR LIGHT~~\n");
sivanon1996 3:b2001deb442c 300 lcd.printf(" %s\n\n\n",indoor);
sivanon1996 3:b2001deb442c 301 bb();
sivanon1996 3:b2001deb442c 302 if (a ==1 ) {
sivanon1996 3:b2001deb442c 303 strcpy(indoor,ON);
sivanon1996 3:b2001deb442c 304 blue.printf("9");
sivanon1996 3:b2001deb442c 305 a = 0;
sivanon1996 3:b2001deb442c 306 }
sivanon1996 3:b2001deb442c 307 if (c == 1 ) {
sivanon1996 3:b2001deb442c 308 strcpy(indoor,OFF);
sivanon1996 3:b2001deb442c 309 blue.printf("6");
sivanon1996 3:b2001deb442c 310 c = 0;
sivanon1996 3:b2001deb442c 311 }
sivanon1996 3:b2001deb442c 312 if (b == 1 ) {
sivanon1996 3:b2001deb442c 313 arrow = 6;
sivanon1996 3:b2001deb442c 314 b = 0;
sivanon1996 3:b2001deb442c 315 }
sivanon1996 3:b2001deb442c 316 }
sivanon1996 3:b2001deb442c 317 }
sivanon1996 3:b2001deb442c 318 blue.printf("o");
kirchnet 2:a0c7513fb634 319 }
kirchnet 2:a0c7513fb634 320 }