Keypad kullanimi
Dependencies: mbed mbed-rtos MFRC522 TextLCD keypad
main.cpp
00001 #include "mbed.h" 00002 #include "Keypad.h" 00003 #include "TextLCD.h" 00004 #include "MFRC522.h" 00005 #include "rtos.h" 00006 Thread is1,is2; 00007 Timer sure; 00008 DigitalOut led(D13); 00009 TextLCD lcd(D11, D12, D7, D8, D9, D10); // rs, e, d4-d7 00010 Keypad key(PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11); 00011 void ekran(); 00012 void kartokuma(); 00013 char key_table[] = { 00014 '1', '2', '3', 'A', 00015 '4', '5', '6', 'B', 00016 '7', '8', '9', 'C', 00017 'C', '0', '#', 'D' 00018 }; 00019 Serial pc(USBTX,USBRX); 00020 char sifre[6]; 00021 char sayac=0,yanlis=0; 00022 bool kontrol=false; 00023 //rfid 00024 #define SPI_MOSI D4 00025 #define SPI_MISO D5 00026 #define SPI_SCLK D3//SCK 00027 //sda ve rst pinleri farketmez 00028 #define SPI_CS D6//SDA 00029 // KL25Z Pin for MFRC522 reset 00030 #define MF_RESET D2//Rst pini 00031 00032 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET); 00033 00034 00035 void kartokuma() 00036 { 00037 // Init. RC522 Chip 00038 RfChip.PCD_Init(); 00039 00040 while (true) { 00041 00042 00043 // Look for new cards 00044 if ( ! RfChip.PICC_IsNewCardPresent()) 00045 { 00046 wait_ms(500); 00047 continue; 00048 } 00049 00050 00051 // Select one of the cards 00052 if ( ! RfChip.PICC_ReadCardSerial()) 00053 { 00054 wait_ms(500); 00055 continue; 00056 } 00057 00058 // Print Card UID 00059 printf("Kart ID: "); 00060 for (uint8_t i = 0; i < RfChip.uid.size; i++) 00061 { 00062 printf(" %X ", RfChip.uid.uidByte[i]);//Hex kodunu verir 00063 00064 } 00065 if(RfChip.uid.uidByte[0]==0x73 && RfChip.uid.uidByte[1]==0x85 && RfChip.uid.uidByte[2]==0x3F 00066 && RfChip.uid.uidByte[3]==0x25) 00067 { 00068 lcd.cls(); 00069 lcd.printf("Giris Basarili"); 00070 led=1; 00071 wait(3); 00072 ekran(); 00073 sayac=0; 00074 led=0; 00075 yanlis=0; 00076 } 00077 else 00078 { 00079 lcd.cls(); 00080 lcd.printf("Gecersiz Kart !!"); 00081 wait(3); 00082 ekran(); 00083 } 00084 printf("\n\r"); 00085 00086 // Print Card type 00087 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak); 00088 printf("Kart Tipi: %s \n\r", RfChip.PICC_GetTypeName(piccType)); 00089 } 00090 } 00091 //rfid 00092 00093 void ekran() 00094 { 00095 lcd.cls(); 00096 lcd.locate(0,0);//1. satır 1. digit 00097 lcd.printf("Sifre:"); 00098 00099 //dizi içeriğini temizlemek için kullanıldı 00100 for(char temizle=0; temizle<6; temizle++) { 00101 sifre[temizle]=0; 00102 } 00103 } 00104 00105 void saat() 00106 { 00107 while(true) 00108 { 00109 for(unsigned char saat=0;saat<12;saat++) 00110 { 00111 for(unsigned char dakika=0;dakika<60;dakika++) 00112 { 00113 for(unsigned char saniye=0;saniye<60;saniye++) 00114 { 00115 lcd.locate(0,1); 00116 lcd.printf("%.2d:%.2d:%.2d",saat,dakika,saniye); 00117 wait(1); 00118 } 00119 } 00120 } 00121 } 00122 } 00123 00124 int main() 00125 { 00126 is1.start(saat); 00127 is2.start(kartokuma); 00128 ekran(); 00129 pc.baud(250000); 00130 uint32_t key_num; 00131 00132 while(true) { 00133 00134 00135 if ((key_num = key.read()) != 0 && sure.read()==0 && kontrol==false){ 00136 lcd.printf("*"); 00137 sifre[sayac]=*(key_table + key_num-1); 00138 sayac++; 00139 } 00140 if(sifre[0]=='1' && sifre[1]=='2' && sifre[2]=='3' 00141 && sifre[3]=='A' && sifre[4]=='B' && sifre[5]=='C') { 00142 lcd.cls(); 00143 lcd.printf("Giris Basarili"); 00144 led=1; 00145 wait(3); 00146 ekran(); 00147 sayac=0; 00148 led=0; 00149 yanlis=0; 00150 } else if(sayac>5) { 00151 00152 kontrol=true; 00153 sayac=0; 00154 lcd.cls(); 00155 lcd.printf("Sifre yanlis"); 00156 wait(3); 00157 kontrol=false; 00158 yanlis++; 00159 if(yanlis>2) { 00160 sure.start(); 00161 lcd.cls(); 00162 lcd.printf("Sistem Kitlendi"); 00163 while(sure.read()<60) { 00164 lcd.locate(0,1); 00165 lcd.printf("%.0f",sure.read()); 00166 led=1; 00167 wait_ms(500); 00168 led=0; 00169 wait_ms(500); 00170 } 00171 yanlis=0; 00172 sure.reset();//timer 0 snye çeker 00173 sure.stop(); 00174 //sure.stop();//timer durur 00175 } 00176 ekran(); 00177 } 00178 00179 00180 } 00181 }
Generated on Thu Jul 21 2022 08:56:52 by 1.7.2