Keypad kullanimi

Dependencies:   mbed mbed-rtos MFRC522 TextLCD keypad

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }