k

Dependencies:   TFT-RFID_Finish3ja mbed MFRC522 UniGraphic

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "stdio.h"
00002 #include "mbed.h"
00003 #include "string"
00004 #include "Arial12x12.h"
00005 #include "Arial24x23.h"
00006 #include "Arial28x28.h"
00007 #include "Arial43x48_numb.h"
00008 #include "pict.h"
00009 #include "pavement_48x34.h"
00010 #include "TFT_MIPI.h"
00011 #include "SDFileSystem.h"
00012 #include "MFRC522.h"
00013 #define MF_RESET PC_6
00014 Serial pc(SERIAL_TX, SERIAL_RX);
00015 Serial esp(PA_15,PB_7);
00016 //DigitalIn button1(D2); 
00017 //DigitalIn button2(D3); 
00018 MFRC522    RfChip   (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
00019 PinName buspins[] = { PA_9, PC_7, PA_10, PB_3, PB_5, PB_4, PB_10, PA_8 };
00020 TFT_MIPI myLCD(BUS_8, buspins, A3, A4, A2, A1, A0, "myLCD");
00021 DigitalIn Sw[] = {PB_13, PB_14, PB_15, PB_2, PB_12,PA_11 };
00022 Timer t;
00023 
00024 unsigned short backgroundcolor=Orange;
00025 unsigned short foregroundcolor=Black;
00026 char orient=1;
00027 int i=0;
00028 int j=0;
00029 int k=0;
00030 int Pagejawjiw = 0;
00031 int state = 0;
00032 int typeA = 0;
00033 int typeB = 0;
00034 int typeC = 0;
00035 int typeD = 0;
00036 int queueA = 0;
00037 int queueB = 0;
00038 int queueC = 0;
00039 int queueD = 0;
00040 int buttonA = 0;
00041 int buttonB = 0;
00042 int main(){
00043     pc.baud(9600);
00044     esp.baud(9600);
00045     char *StudentID;
00046     uint8_t UIDCard[4]={};
00047     pc.printf("starting...\n");
00048     RfChip.PCD_Init();
00049 
00050     myLCD.set_orientation(orient);
00051     int time;
00052     t.start();
00053     myLCD.background(White);    
00054     myLCD.foreground(foregroundcolor);    
00055     myLCD.cls();
00056 
00057     while(1){  
00058         //if(button1 == 1){buttonA+=1;}  
00059 //        if(button2 == 1){buttonB+=1;}
00060         if(Pagejawjiw == 0){
00061             myLCD.background(backgroundcolor);
00062             myLCD.foreground(foregroundcolor);
00063             myLCD.Bitmap(150,45,180,180,data);
00064             myLCD.fillrect(0,320,500,280,Orange);
00065             time=t.read_us();
00066             if(! RfChip.PICC_IsNewCardPresent()){
00067                   pc.printf("GOOOOOOOOO\n");
00068                   for(int i=200; i<=200;i++){
00069                     myLCD.locate(i,295);
00070                     myLCD.set_font((unsigned char*) Arial12x12);
00071                     myLCD.printf("Please scan your Student ID card to start.");}
00072                   for(int i=200; i>=2;i--){
00073                     myLCD.locate(i,295);
00074                     myLCD.set_font((unsigned char*) Arial12x12);
00075                     myLCD.printf("Please scan your Student ID card to start.");}
00076                   continue;}
00077             if ( ! RfChip.PICC_ReadCardSerial()){pc.printf("!!!!!!!!!!!!!!!");continue;}
00078             pc.printf("Studen's ID: ");
00079             for (uint8_t i = 0; i < RfChip.uid.size; i++){UIDCard[i] = RfChip.uid.uidByte[i];}
00080             if (UIDCard[0]==187 and UIDCard[1]==164 and UIDCard[2]==90 and UIDCard[3]==127){StudentID = "60340500033"; 
00081             pc.printf("%s\n",StudentID);Pagejawjiw = 1;myLCD.cls();
00082             char b[] = "X";
00083             esp.putc(b[0]);
00084             char id = esp.putc(b[0]);
00085             pc.printf("id %c\n",id);
00086             }
00087             
00088             else if (UIDCard[0]==60 and UIDCard[1]==135 and UIDCard[2]==56 and UIDCard[3]==59){StudentID = "60340500066"; 
00089             pc.printf("%s\n",StudentID);Pagejawjiw = 0;
00090             char b[] = "Y";
00091             esp.putc(b[0]);
00092             }
00093             else {StudentID="0"; pc.printf("%s\n",StudentID);}
00094             }
00095         else if (Pagejawjiw == 1) {
00096                 if(i == 0 or Sw[2] == 0){
00097                     i++;
00098                     switch(i){
00099                         case 1:
00100                             typeA = 1;
00101                             myLCD.fillrect(0,0,500,50,Orange);
00102                             myLCD.rect(155,70,320,120,Orange);
00103                             myLCD.rect(155,130,320,180,Orange);
00104                             myLCD.rect(155,190,320,240,Orange);
00105                             myLCD.rect(155,250,320,300,Orange);
00106                             myLCD.set_font((unsigned char*) Arial28x28);
00107                             myLCD.locate(160,15);
00108                             myLCD.background(Orange);
00109                             myLCD.foreground(Black);
00110                             myLCD.printf("Select Mode");
00111                             myLCD.set_font((unsigned char*) Arial24x23);
00112                             myLCD.locate(162,85);
00113                             myLCD.background(Yellow);
00114                             myLCD.foreground(Green);
00115                             myLCD.printf(" Document");
00116                             myLCD.locate(187,145);
00117                             myLCD.background(White);
00118                             myLCD.foreground(Black);
00119                             myLCD.printf("ID Card");
00120                             myLCD.locate(177,205);
00121                             myLCD.background(White);
00122                             myLCD.foreground(Black);
00123                             myLCD.printf("Financial");
00124                             myLCD.locate(202,265);
00125                             myLCD.background(White);
00126                             myLCD.foreground(Black);
00127                             myLCD.printf("Other");
00128                             wait(0.3);
00129                             break; 
00130                         case 2:             
00131                             typeB = 2;               
00132                             //myLCD.cls();
00133                             myLCD.fillrect(0,0,500,50,Orange);
00134                             myLCD.rect(155,70,320,120,Orange);
00135                             myLCD.rect(155,130,320,180,Orange);
00136                             myLCD.rect(155,190,320,240,Orange);
00137                             myLCD.rect(155,250,320,300,Orange);
00138                             myLCD.set_font((unsigned char*) Arial28x28);
00139                             myLCD.locate(160,15);
00140                             myLCD.background(Orange);
00141                             myLCD.foreground(Black);
00142                             myLCD.printf("Select Mode");
00143                             myLCD.set_font((unsigned char*) Arial24x23);
00144                             myLCD.locate(162,85);
00145                             myLCD.background(White);
00146                             myLCD.foreground(Black);
00147                             myLCD.printf(" Document");
00148                             myLCD.locate(187,145);
00149                             myLCD.background(Yellow);
00150                             myLCD.foreground(Green);
00151                             myLCD.printf("ID Card");
00152                             myLCD.locate(177,205);
00153                             myLCD.background(White);
00154                             myLCD.foreground(Black);
00155                             myLCD.printf("Financial");
00156                             myLCD.locate(202,265);
00157                             myLCD.background(White);
00158                             myLCD.foreground(Black);
00159                             myLCD.printf("Other");
00160                             wait(0.3);
00161                             break;  
00162                         case 3:
00163                             typeC = 3;   
00164                             myLCD.fillrect(0,0,500,50,Orange);
00165                             myLCD.rect(155,70,320,120,Orange);
00166                             myLCD.rect(155,130,320,180,Orange);
00167                             myLCD.rect(155,190,320,240,Orange);
00168                             myLCD.rect(155,250,320,300,Orange);
00169                             myLCD.set_font((unsigned char*) Arial28x28);
00170                             myLCD.locate(160,15);
00171                             myLCD.background(Orange);
00172                             myLCD.foreground(Black);
00173                             myLCD.printf("Select Mode");
00174                             myLCD.set_font((unsigned char*) Arial24x23);
00175                             myLCD.locate(162,85);
00176                             myLCD.background(White);
00177                             myLCD.foreground(Black);
00178                             myLCD.printf(" Document");
00179                             myLCD.locate(187,145);
00180                             myLCD.background(White);
00181                             myLCD.foreground(Black);
00182                             myLCD.printf("ID Card");
00183                             myLCD.locate(177,205);
00184                             myLCD.background(Yellow);
00185                             myLCD.foreground(Green);
00186                             myLCD.printf("Financial");
00187                             myLCD.locate(202,265);
00188                             myLCD.background(White);
00189                             myLCD.foreground(Black);
00190                             myLCD.printf("Other");
00191                             wait(0.3);
00192                             break; 
00193                         case 4:            
00194                             typeD = 4;                 
00195                             myLCD.fillrect(0,0,500,50,Orange);
00196                             myLCD.rect(155,70,320,120,Orange);
00197                             myLCD.rect(155,130,320,180,Orange);
00198                             myLCD.rect(155,190,320,240,Orange);
00199                             myLCD.rect(155,250,320,300,Orange);
00200                             myLCD.set_font((unsigned char*) Arial28x28);
00201                             myLCD.locate(160,15);
00202                             myLCD.background(Orange);
00203                             myLCD.foreground(Black);
00204                             myLCD.printf("Select Mode");
00205                             myLCD.set_font((unsigned char*) Arial24x23);
00206                             myLCD.locate(162,85);
00207                             myLCD.background(White);
00208                             myLCD.foreground(Black);
00209                             myLCD.printf(" Document");
00210                             myLCD.locate(187,145);
00211                             myLCD.background(White);
00212                             myLCD.foreground(Black);
00213                             myLCD.printf("ID Card");
00214                             myLCD.locate(177,205);
00215                             myLCD.background(White);
00216                             myLCD.foreground(Black);
00217                             myLCD.printf("Financial");
00218                             myLCD.locate(202,265);
00219                             myLCD.background(Yellow);
00220                             myLCD.foreground(Green);
00221                             myLCD.printf("Other");
00222                             wait(0.3);
00223                             break;
00224                         case 5:
00225                             i=0;
00226                             break; 
00227                         }
00228                     }
00229                 else if(Sw[0] == 0){
00230                     i--;
00231                     switch(i){
00232                         case 0:
00233                             i = 5;
00234                             break;
00235                         case 1:
00236                             //myLCD.cls();
00237                             myLCD.fillrect(0,0,500,50,Orange);
00238                             myLCD.rect(155,70,320,120,Orange);
00239                             myLCD.rect(155,130,320,180,Orange);
00240                             myLCD.rect(155,190,320,240,Orange);
00241                             myLCD.rect(155,250,320,300,Orange);
00242                             myLCD.set_font((unsigned char*) Arial28x28);
00243                             myLCD.locate(160,15);
00244                             myLCD.background(Orange);
00245                             myLCD.foreground(Black);
00246                             myLCD.printf("Select Mode");
00247                             myLCD.set_font((unsigned char*) Arial24x23);
00248                             myLCD.locate(162,85);
00249                             myLCD.background(Yellow);
00250                             myLCD.foreground(Green);
00251                             myLCD.printf(" Document");
00252                             myLCD.locate(187,145);
00253                             myLCD.background(White);
00254                             myLCD.foreground(Black);
00255                             myLCD.printf("ID Card");
00256                             myLCD.locate(177,205);
00257                             myLCD.background(White);
00258                             myLCD.foreground(Black);
00259                             myLCD.printf("Financial");
00260                             myLCD.locate(202,265);
00261                             myLCD.background(White);
00262                             myLCD.foreground(Black);
00263                             myLCD.printf("Other");
00264                             wait(0.3);
00265                             break; 
00266                         case 2:
00267                             myLCD.fillrect(0,0,500,50,Orange);
00268                             myLCD.rect(155,70,320,120,Orange);
00269                             myLCD.rect(155,130,320,180,Orange);
00270                             myLCD.rect(155,190,320,240,Orange);
00271                             myLCD.rect(155,250,320,300,Orange);
00272                             myLCD.set_font((unsigned char*) Arial28x28);
00273                             myLCD.locate(160,15);
00274                             myLCD.background(Orange);
00275                             myLCD.foreground(Black);
00276                             myLCD.printf("Select Mode");
00277                             myLCD.set_font((unsigned char*) Arial24x23);
00278                             myLCD.locate(162,85);
00279                             myLCD.background(White);
00280                             myLCD.foreground(Black);
00281                             myLCD.printf(" Document");
00282                             myLCD.locate(187,145);
00283                             myLCD.background(Yellow);
00284                             myLCD.foreground(Green);
00285                             myLCD.printf("ID Card");
00286                             myLCD.locate(177,205);
00287                             myLCD.background(White);
00288                             myLCD.foreground(Black);
00289                             myLCD.printf("Financial");
00290                             myLCD.locate(202,265);
00291                             myLCD.background(White);
00292                             myLCD.foreground(Black);
00293                             myLCD.printf("Other");
00294                             wait(0.3);
00295                             break;  
00296                         case 3:
00297                             myLCD.fillrect(0,0,500,50,Orange);
00298                             myLCD.rect(155,70,320,120,Orange);
00299                             myLCD.rect(155,130,320,180,Orange);
00300                             myLCD.rect(155,190,320,240,Orange);
00301                             myLCD.rect(155,250,320,300,Orange);
00302                             myLCD.set_font((unsigned char*) Arial28x28);
00303                             myLCD.locate(160,15);
00304                             myLCD.background(Orange);
00305                             myLCD.foreground(Black);
00306                             myLCD.printf("Select Mode");
00307                             myLCD.set_font((unsigned char*) Arial24x23);
00308                             myLCD.locate(162,85);
00309                             myLCD.background(White);
00310                             myLCD.foreground(Black);
00311                             myLCD.printf(" Document");
00312                             myLCD.locate(187,145);
00313                             myLCD.background(White);
00314                             myLCD.foreground(Black);
00315                             myLCD.printf("ID Card");
00316                             myLCD.locate(177,205);
00317                             myLCD.background(Yellow);
00318                             myLCD.foreground(Green);
00319                             myLCD.printf("Financial");
00320                             myLCD.locate(202,265);
00321                             myLCD.background(White);
00322                             myLCD.foreground(Black);
00323                             myLCD.printf("Other");
00324                             wait(0.3);
00325                             break; 
00326                         case 4:
00327                             myLCD.fillrect(0,0,500,50,Orange);
00328                             myLCD.rect(155,70,320,120,Orange);
00329                             myLCD.rect(155,130,320,180,Orange);
00330                             myLCD.rect(155,190,320,240,Orange);
00331                             myLCD.rect(155,250,320,300,Orange);
00332                             myLCD.set_font((unsigned char*) Arial28x28);
00333                             myLCD.locate(160,15);
00334                             myLCD.background(Orange);
00335                             myLCD.foreground(Black);
00336                             myLCD.printf("Select Mode");
00337                             myLCD.set_font((unsigned char*) Arial24x23);
00338                             myLCD.locate(162,85);
00339                             myLCD.background(White);
00340                             myLCD.foreground(Black);
00341                             myLCD.printf(" Document");
00342                             myLCD.locate(187,145);
00343                             myLCD.background(White);
00344                             myLCD.foreground(Black);
00345                             myLCD.printf("ID Card");
00346                             myLCD.locate(177,205);
00347                             myLCD.background(White);
00348                             myLCD.foreground(Black);
00349                             myLCD.printf("Financial");
00350                             myLCD.locate(202,265);
00351                             myLCD.background(Yellow);
00352                             myLCD.foreground(Green);
00353                             myLCD.printf("Other");
00354                             wait(0.3);
00355                             break; 
00356                         }
00357                     }
00358                 else if(Sw[4] == 0){
00359                     Pagejawjiw++;
00360                     wait(0.3);
00361                     if(typeA == 1){
00362                         char a[] = "1";
00363                         esp.putc(a[0]); 
00364                         }
00365                     if(typeB == 2){
00366                         char b[] = "2";
00367                         esp.putc(b[0]); 
00368                         }                    
00369                     if(typeC == 3){
00370                         char c[] = "3";
00371                         esp.putc(c[0]); 
00372                         }
00373                     if(typeD == 4){
00374                         char d[] = "4";
00375                         esp.putc(d[0]); 
00376                         }
00377                         
00378                     
00379                     
00380                     
00381                     
00382                     }
00383                 }
00384             else if(Pagejawjiw == 2){
00385                 if(j == 0 or Sw[1] == 0){
00386                     switch(j){
00387                        case 0:
00388                             j++;
00389                             myLCD.cls();
00390                             myLCD.fillrect(0,0,500,50,Orange);
00391                             myLCD.locate(150,15);
00392                             myLCD.background(Orange);
00393                             myLCD.set_font((unsigned char*) Arial28x28);
00394                             myLCD.printf("Select JorJew");
00395                             myLCD.fillrect(40,130,215,230,DarkGrey);
00396                             myLCD.fillrect(265,130,440,230,DarkGrey);
00397                             myLCD.fillcircle(127,182,40,Yellow);
00398                             myLCD.fillcircle(347,182,40,White);
00399                             myLCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false);
00400                             myLCD.background(White);
00401                             myLCD.locate(106,160);
00402                             myLCD.printf(" 1");
00403                             myLCD.locate(326,160);
00404                             myLCD.printf(" 2");
00405                             wait(0.3);
00406                             break;
00407                         case 1:
00408                             myLCD.fillrect(0,0,500,50,Orange);
00409                             myLCD.locate(150,15);
00410                             myLCD.background(Orange);
00411                             myLCD.set_font((unsigned char*) Arial28x28);
00412                             myLCD.printf("Select JorJew");
00413                             myLCD.fillrect(40,130,215,230,DarkGrey);
00414                             myLCD.fillrect(265,130,440,230,DarkGrey);
00415                             myLCD.fillcircle(127,182,40,White);
00416                             myLCD.fillcircle(347,182,40,Yellow);
00417                             myLCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false);
00418                             myLCD.background(White);
00419                             myLCD.locate(106,160);
00420                             myLCD.printf(" 1");
00421                             myLCD.locate(326,160);
00422                             myLCD.printf(" 2");
00423                             wait(0.3);
00424                             break;
00425                         }
00426                     }
00427                 else if(Sw[3] == 0){
00428                             myLCD.fillrect(0,0,500,50,Orange);
00429                             myLCD.locate(150,15);
00430                             myLCD.background(Orange);
00431                             myLCD.set_font((unsigned char*) Arial28x28);
00432                             myLCD.printf("Select JorJew");
00433                             myLCD.fillrect(40,130,215,230,DarkGrey);
00434                             myLCD.fillrect(265,130,440,230,DarkGrey);
00435                             myLCD.fillcircle(127,182,40,Yellow);
00436                             myLCD.fillcircle(347,182,40,White);
00437                             myLCD.set_font((unsigned char*) Arial43x48_numb, 46, 58, false);
00438                             myLCD.background(White);
00439                             myLCD.locate(106,160);
00440                             myLCD.printf(" 1");
00441                             myLCD.locate(326,160);
00442                             myLCD.printf(" 2");
00443                             wait(0.3);
00444                     }
00445                 else if(Sw[5] == 0){
00446                     Pagejawjiw = 1;
00447                     wait(0.3);
00448                     i = 0;
00449                     myLCD.cls();
00450                     }
00451                 else if(Sw[4] == 0){
00452                     Pagejawjiw++;
00453                     wait(0.3);
00454                     myLCD.cls();
00455                     k=0;
00456                     }
00457                 }
00458             else if(Pagejawjiw == 3){
00459                 if(k==0 or Sw[1] == 0){
00460                 myLCD.fillrect(0,0,500,50,Orange);
00461                 myLCD.locate(150,15);
00462                 myLCD.background(Orange);
00463                 myLCD.fillrect(125,90,355,230,Green); 
00464                 myLCD.set_font((unsigned char*) Arial28x28);
00465                 myLCD.locate(165,130);
00466                 myLCD.background(Green);
00467                 myLCD.foreground(Black);
00468                 myLCD.printf(" Take out"); 
00469                 myLCD.locate(155,170);
00470                 myLCD.printf(" JorJew#1/2");
00471                 myLCD.fillrect(100,250,215,300,Yellow);
00472                 myLCD.fillrect(265,250,380,300,Yellow);
00473                 myLCD.locate(110,260);
00474                 myLCD.background(Green);
00475                 myLCD.foreground(Black);
00476                 myLCD.printf("(A)");
00477                 myLCD.locate(265,260);
00478                 myLCD.printf("(C)");
00479                 k++;
00480                 wait(0.3);
00481                 }
00482                 else if((Sw[0] == 0)){
00483                     myLCD.cls();
00484                     Pagejawjiw++;
00485                     wait(0.3);
00486                 }
00487                 else if((Sw[2] == 0)){
00488                     Pagejawjiw--;
00489                     wait(0.3);
00490                     j = 0;
00491                 }
00492                 }
00493             else if(Pagejawjiw == 4){
00494                 myLCD.cls();
00495                 myLCD.background(backgroundcolor);
00496                 myLCD.foreground(foregroundcolor);
00497                 myLCD.Bitmap(150,45,180,180,data);
00498                 myLCD.fillrect(0,320,500,280,Orange);
00499                 time=t.read_us();
00500                 Pagejawjiw = 0;
00501                 i = 0;
00502                 for(int i=2; i<350;i++){
00503                         myLCD.locate(i,295);
00504                         myLCD.set_font((unsigned char*) Arial12x12);
00505                         myLCD.printf("Love , Thank you");
00506                 }
00507                 for(int i=350; i>=2;i--){
00508                         myLCD.locate(i,295);
00509                         myLCD.set_font((unsigned char*) Arial12x12);
00510                         myLCD.printf("Love , Thank you");
00511                 }
00512                 wait(5);
00513                 myLCD.cls();
00514               }
00515       }
00516 }