![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Nextion TFT LCD Card Display
Dependencies: MFRC522 NextionLCD
Fork of ProjectCardDisplay by
main.cpp@0:a5d3db2f2625, 2018-08-21 (annotated)
- Committer:
- shivanandgowdakr
- Date:
- Tue Aug 21 11:18:56 2018 +0000
- Revision:
- 0:a5d3db2f2625
- Child:
- 1:ff4e4f645e13
Access Control Using MIFARE RFID Card, and with details displayed on Nextion LCD;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shivanandgowdakr | 0:a5d3db2f2625 | 1 | #include "mbed.h" |
shivanandgowdakr | 0:a5d3db2f2625 | 2 | #include "NextionLCD.h" |
shivanandgowdakr | 0:a5d3db2f2625 | 3 | #include "Time.h" |
shivanandgowdakr | 0:a5d3db2f2625 | 4 | #define PASSWORD 11111 |
shivanandgowdakr | 0:a5d3db2f2625 | 5 | |
shivanandgowdakr | 0:a5d3db2f2625 | 6 | #include "MFRC522.h" |
shivanandgowdakr | 0:a5d3db2f2625 | 7 | #include "Card.h" |
shivanandgowdakr | 0:a5d3db2f2625 | 8 | |
shivanandgowdakr | 0:a5d3db2f2625 | 9 | RawSerial pc(USBTX,USBRX); |
shivanandgowdakr | 0:a5d3db2f2625 | 10 | NextionLCD lcd(D1, D0); //Tx, Rx |
shivanandgowdakr | 0:a5d3db2f2625 | 11 | Thread Menu; |
shivanandgowdakr | 0:a5d3db2f2625 | 12 | Thread DispTime; |
shivanandgowdakr | 0:a5d3db2f2625 | 13 | Thread DispName; |
shivanandgowdakr | 0:a5d3db2f2625 | 14 | |
shivanandgowdakr | 0:a5d3db2f2625 | 15 | DigitalOut led1(LED1); |
shivanandgowdakr | 0:a5d3db2f2625 | 16 | DigitalOut led2(LED2); |
shivanandgowdakr | 0:a5d3db2f2625 | 17 | DigitalOut led3(LED3); |
shivanandgowdakr | 0:a5d3db2f2625 | 18 | DigitalOut relay(D8); |
shivanandgowdakr | 0:a5d3db2f2625 | 19 | |
shivanandgowdakr | 0:a5d3db2f2625 | 20 | |
shivanandgowdakr | 0:a5d3db2f2625 | 21 | volatile char c; |
shivanandgowdakr | 0:a5d3db2f2625 | 22 | uint8_t Present_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 23 | uint8_t Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 24 | uint8_t Back=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 25 | void Page1(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 26 | void Page2(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 27 | void Page3(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 28 | void Page4(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 29 | void Main_Menu(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 30 | void flip(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 31 | |
shivanandgowdakr | 0:a5d3db2f2625 | 32 | |
shivanandgowdakr | 0:a5d3db2f2625 | 33 | char prevPage='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 34 | //bool flag=true; |
shivanandgowdakr | 0:a5d3db2f2625 | 35 | char Cand_Name[25]={'\0'}; |
shivanandgowdakr | 0:a5d3db2f2625 | 36 | char Time_Disp[30]={'\0'}; |
shivanandgowdakr | 0:a5d3db2f2625 | 37 | |
shivanandgowdakr | 0:a5d3db2f2625 | 38 | void Display_Details(void); |
shivanandgowdakr | 0:a5d3db2f2625 | 39 | |
shivanandgowdakr | 0:a5d3db2f2625 | 40 | void pc_recv() |
shivanandgowdakr | 0:a5d3db2f2625 | 41 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 42 | while(pc.readable()) |
shivanandgowdakr | 0:a5d3db2f2625 | 43 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 44 | c=pc.getc(); |
shivanandgowdakr | 0:a5d3db2f2625 | 45 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 46 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 47 | |
shivanandgowdakr | 0:a5d3db2f2625 | 48 | |
shivanandgowdakr | 0:a5d3db2f2625 | 49 | void Menu_Selection() |
shivanandgowdakr | 0:a5d3db2f2625 | 50 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 51 | |
shivanandgowdakr | 0:a5d3db2f2625 | 52 | while(1) |
shivanandgowdakr | 0:a5d3db2f2625 | 53 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 54 | pc_recv(); |
shivanandgowdakr | 0:a5d3db2f2625 | 55 | switch (c) |
shivanandgowdakr | 0:a5d3db2f2625 | 56 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 57 | case '1': |
shivanandgowdakr | 0:a5d3db2f2625 | 58 | Main_Menu(); |
shivanandgowdakr | 0:a5d3db2f2625 | 59 | c='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 60 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 61 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 62 | |
shivanandgowdakr | 0:a5d3db2f2625 | 63 | case '2': |
shivanandgowdakr | 0:a5d3db2f2625 | 64 | Page1(); |
shivanandgowdakr | 0:a5d3db2f2625 | 65 | c='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 66 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 67 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 68 | |
shivanandgowdakr | 0:a5d3db2f2625 | 69 | case '3': |
shivanandgowdakr | 0:a5d3db2f2625 | 70 | Page2(); |
shivanandgowdakr | 0:a5d3db2f2625 | 71 | c='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 72 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 73 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 74 | case '4': |
shivanandgowdakr | 0:a5d3db2f2625 | 75 | Page3(); |
shivanandgowdakr | 0:a5d3db2f2625 | 76 | c='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 77 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 78 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 79 | |
shivanandgowdakr | 0:a5d3db2f2625 | 80 | case '5': |
shivanandgowdakr | 0:a5d3db2f2625 | 81 | Page4(); |
shivanandgowdakr | 0:a5d3db2f2625 | 82 | c='\0'; |
shivanandgowdakr | 0:a5d3db2f2625 | 83 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 84 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 85 | default: |
shivanandgowdakr | 0:a5d3db2f2625 | 86 | //lcd.DrawString(0,0,480,40,2,WHITE,BLACK,0,2, "Flash Master Card to Edit"); |
shivanandgowdakr | 0:a5d3db2f2625 | 87 | // Display_Details(); |
shivanandgowdakr | 0:a5d3db2f2625 | 88 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 89 | break; |
shivanandgowdakr | 0:a5d3db2f2625 | 90 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 91 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 92 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 93 | |
shivanandgowdakr | 0:a5d3db2f2625 | 94 | void Display_Time(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 95 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 96 | while(true) |
shivanandgowdakr | 0:a5d3db2f2625 | 97 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 98 | Get_Date_Time_Display(Time_Disp); |
shivanandgowdakr | 0:a5d3db2f2625 | 99 | lcd.DrawString(0,0,480,40,2,BLACK,WHITE,0,0,Time_Disp); |
shivanandgowdakr | 0:a5d3db2f2625 | 100 | lcd.DrawString(0,295,480,25,1,BLACK,WHITE,0,0,"Powered by Exultsoft Technolies Pvt. Ltd."); |
shivanandgowdakr | 0:a5d3db2f2625 | 101 | wait(60); |
shivanandgowdakr | 0:a5d3db2f2625 | 102 | memset(Time_Disp,'\0',30); |
shivanandgowdakr | 0:a5d3db2f2625 | 103 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 104 | |
shivanandgowdakr | 0:a5d3db2f2625 | 105 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 106 | int main() |
shivanandgowdakr | 0:a5d3db2f2625 | 107 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 108 | char CARDNO[30]={'\0'}; |
shivanandgowdakr | 0:a5d3db2f2625 | 109 | lcd.ClrScr(BLACK); |
shivanandgowdakr | 0:a5d3db2f2625 | 110 | lcd.DrawString(0,100,480,40,2,WHITE,BLACK,0,2, "##############################"); |
shivanandgowdakr | 0:a5d3db2f2625 | 111 | lcd.DrawString(0,150,480,40,2,YELLOW,BLACK,0,0, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); |
shivanandgowdakr | 0:a5d3db2f2625 | 112 | lcd.DrawString(0,200,480,40,2,BLUE,BLACK,0,0, "------------------------------"); |
shivanandgowdakr | 0:a5d3db2f2625 | 113 | lcd.ClrScr(BLACK); |
shivanandgowdakr | 0:a5d3db2f2625 | 114 | wait(10); |
shivanandgowdakr | 0:a5d3db2f2625 | 115 | iSetTerminalTime("27072018111213"); |
shivanandgowdakr | 0:a5d3db2f2625 | 116 | Menu.start(callback(Menu_Selection)); |
shivanandgowdakr | 0:a5d3db2f2625 | 117 | DispTime.start(callback(Display_Time)); |
shivanandgowdakr | 0:a5d3db2f2625 | 118 | DispName.start(callback(Display_Details)); |
shivanandgowdakr | 0:a5d3db2f2625 | 119 | |
shivanandgowdakr | 0:a5d3db2f2625 | 120 | int success=-1; |
shivanandgowdakr | 0:a5d3db2f2625 | 121 | while(true) |
shivanandgowdakr | 0:a5d3db2f2625 | 122 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 123 | MIFARE_Init(); |
shivanandgowdakr | 0:a5d3db2f2625 | 124 | Read_Card_Details(CARDNO); |
shivanandgowdakr | 0:a5d3db2f2625 | 125 | |
shivanandgowdakr | 0:a5d3db2f2625 | 126 | success= strcmp(CARDNO,"17D6C66B"); |
shivanandgowdakr | 0:a5d3db2f2625 | 127 | if(success==0) |
shivanandgowdakr | 0:a5d3db2f2625 | 128 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 129 | flip(); |
shivanandgowdakr | 0:a5d3db2f2625 | 130 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 131 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 132 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 133 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 134 | |
shivanandgowdakr | 0:a5d3db2f2625 | 135 | |
shivanandgowdakr | 0:a5d3db2f2625 | 136 | |
shivanandgowdakr | 0:a5d3db2f2625 | 137 | |
shivanandgowdakr | 0:a5d3db2f2625 | 138 | void Main_Menu(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 139 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 140 | lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,0, "1. MAIN MENU "); |
shivanandgowdakr | 0:a5d3db2f2625 | 141 | lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0,"2. OPTION ONE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 142 | lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. OPTION TWO "); |
shivanandgowdakr | 0:a5d3db2f2625 | 143 | lcd.DrawString(0,160,480,40,2,BROWN,WHITE,0,0,"4. OPTION THREE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 144 | lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. OPTION FOUR "); |
shivanandgowdakr | 0:a5d3db2f2625 | 145 | lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0,"6. OPTION FIVE"); |
shivanandgowdakr | 0:a5d3db2f2625 | 146 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 147 | Present_State=1; Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 148 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 149 | |
shivanandgowdakr | 0:a5d3db2f2625 | 150 | void Page1(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 151 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 152 | lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU "); |
shivanandgowdakr | 0:a5d3db2f2625 | 153 | lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 1 OPTION ONE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 154 | lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 1 OPTION TWO "); |
shivanandgowdakr | 0:a5d3db2f2625 | 155 | lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 1 OPTION THREE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 156 | lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 1 OPTION FOUR "); |
shivanandgowdakr | 0:a5d3db2f2625 | 157 | lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 1 OPTION FIVE"); |
shivanandgowdakr | 0:a5d3db2f2625 | 158 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 159 | Present_State=2; Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 160 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 161 | |
shivanandgowdakr | 0:a5d3db2f2625 | 162 | void Page2(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 163 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 164 | lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU "); |
shivanandgowdakr | 0:a5d3db2f2625 | 165 | lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 2 OPTION ONE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 166 | lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 2 OPTION TWO "); |
shivanandgowdakr | 0:a5d3db2f2625 | 167 | lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 2 OPTION THREE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 168 | lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 2 OPTION FOUR "); |
shivanandgowdakr | 0:a5d3db2f2625 | 169 | lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 2 OPTION FIVE"); |
shivanandgowdakr | 0:a5d3db2f2625 | 170 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 171 | Present_State=3; Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 172 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 173 | |
shivanandgowdakr | 0:a5d3db2f2625 | 174 | void Page3(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 175 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 176 | lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU "); |
shivanandgowdakr | 0:a5d3db2f2625 | 177 | lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 3 OPTION ONE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 178 | lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 3 OPTION TWO "); |
shivanandgowdakr | 0:a5d3db2f2625 | 179 | lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 3 OPTION THREE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 180 | lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 3 OPTION FOUR "); |
shivanandgowdakr | 0:a5d3db2f2625 | 181 | lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 3 OPTION FIVE"); |
shivanandgowdakr | 0:a5d3db2f2625 | 182 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 183 | |
shivanandgowdakr | 0:a5d3db2f2625 | 184 | Present_State=4; Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 185 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 186 | |
shivanandgowdakr | 0:a5d3db2f2625 | 187 | void Page4(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 188 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 189 | lcd.DrawString(0,40,480,40,2,WHITE,BLACK,0,2, "1. MAIN MENU "); |
shivanandgowdakr | 0:a5d3db2f2625 | 190 | lcd.DrawString(0,80,480,40,2,YELLOW,RED,0,0, "2. PAGE 4 OPTION ONE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 191 | lcd.DrawString(0,120,480,40,2,BLUE,GREEN,0,0, "3. PAGE 4 OPTION TWO "); |
shivanandgowdakr | 0:a5d3db2f2625 | 192 | lcd.DrawString(0,160,480,40,2,WHITE,GRAY,0,0, "4. PAGE 4 OPTION THREE "); |
shivanandgowdakr | 0:a5d3db2f2625 | 193 | lcd.DrawString(0,200,480,40,2,RED,YELLOW,0,0, "5. PAGE 4 OPTION FOUR "); |
shivanandgowdakr | 0:a5d3db2f2625 | 194 | lcd.DrawString(0,240,480,40,2,GREEN,BLUE,0,0, "6. PAGE 4 OPTION FIVE"); |
shivanandgowdakr | 0:a5d3db2f2625 | 195 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 196 | Present_State=0; Previous_State=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 197 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 198 | |
shivanandgowdakr | 0:a5d3db2f2625 | 199 | void Display_Details(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 200 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 201 | while(1) |
shivanandgowdakr | 0:a5d3db2f2625 | 202 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 203 | Thread::signal_wait(0x2); |
shivanandgowdakr | 0:a5d3db2f2625 | 204 | memcpy(Cand_Name," Good Morning",20); |
shivanandgowdakr | 0:a5d3db2f2625 | 205 | int hours=Get_Hours(); |
shivanandgowdakr | 0:a5d3db2f2625 | 206 | if(hours>=0 && hours <12) |
shivanandgowdakr | 0:a5d3db2f2625 | 207 | lcd.FillRectangle(0,40,480,255,BLUE); |
shivanandgowdakr | 0:a5d3db2f2625 | 208 | lcd.DrawString(0,40,480,40,2,WHITE,BLUE,0,2,Cand_Name); |
shivanandgowdakr | 0:a5d3db2f2625 | 209 | lcd.DrawString(0,80,480,40,2,WHITE,BLUE,0,2,"Name of CARD Holder"); |
shivanandgowdakr | 0:a5d3db2f2625 | 210 | lcd.DrawString(0,120,480,40,2,WHITE,BLUE,0,2," Have a Great Day "); |
shivanandgowdakr | 0:a5d3db2f2625 | 211 | memset(Cand_Name,'\0',25); |
shivanandgowdakr | 0:a5d3db2f2625 | 212 | relay=0; |
shivanandgowdakr | 0:a5d3db2f2625 | 213 | wait(1); |
shivanandgowdakr | 0:a5d3db2f2625 | 214 | relay=1; |
shivanandgowdakr | 0:a5d3db2f2625 | 215 | wait(2); |
shivanandgowdakr | 0:a5d3db2f2625 | 216 | lcd.FillRectangle(0,40,480,255,BLUE); |
shivanandgowdakr | 0:a5d3db2f2625 | 217 | |
shivanandgowdakr | 0:a5d3db2f2625 | 218 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 219 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 220 | |
shivanandgowdakr | 0:a5d3db2f2625 | 221 | |
shivanandgowdakr | 0:a5d3db2f2625 | 222 | void flip(void) |
shivanandgowdakr | 0:a5d3db2f2625 | 223 | { |
shivanandgowdakr | 0:a5d3db2f2625 | 224 | led1=!led1; |
shivanandgowdakr | 0:a5d3db2f2625 | 225 | led2=!led2; |
shivanandgowdakr | 0:a5d3db2f2625 | 226 | led3=!led3; |
shivanandgowdakr | 0:a5d3db2f2625 | 227 | DispName.signal_set(0x02); |
shivanandgowdakr | 0:a5d3db2f2625 | 228 | |
shivanandgowdakr | 0:a5d3db2f2625 | 229 | } |
shivanandgowdakr | 0:a5d3db2f2625 | 230 |