Keypad kullanimi

Dependencies:   mbed mbed-rtos MFRC522 TextLCD keypad

main.cpp

Committer:
marvas
Date:
2019-10-15
Revision:
3:03b1e1ac067d
Parent:
2:e0df3db0da50

File content as of revision 3:03b1e1ac067d:

#include "mbed.h"
#include "Keypad.h"
#include "TextLCD.h"
#include "MFRC522.h"
#include "rtos.h"
Thread is1,is2;
Timer sure;
DigitalOut led(D13);
TextLCD lcd(D11, D12, D7, D8, D9, D10); // rs, e, d4-d7
Keypad key(PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11);
void ekran();
void kartokuma();
char key_table[] = {
'1', '2', '3', 'A',
'4', '5', '6', 'B',
'7', '8', '9', 'C',
'C', '0', '#', 'D'
};
Serial pc(USBTX,USBRX);
char sifre[6];
char sayac=0,yanlis=0;
bool kontrol=false;
//rfid
#define SPI_MOSI D4
#define SPI_MISO D5
#define SPI_SCLK D3//SCK
//sda ve rst pinleri farketmez 
#define SPI_CS D6//SDA
// KL25Z Pin for MFRC522 reset
#define MF_RESET D2//Rst pini

MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);


void kartokuma()
{
// Init. RC522 Chip
RfChip.PCD_Init();

while (true) {


// Look for new cards
if ( ! RfChip.PICC_IsNewCardPresent())
{
wait_ms(500);
continue;
}


// Select one of the cards
if ( ! RfChip.PICC_ReadCardSerial())
{
wait_ms(500);
continue;
}

// Print Card UID
printf("Kart ID: ");
for (uint8_t i = 0; i < RfChip.uid.size; i++)
{
printf(" %X ", RfChip.uid.uidByte[i]);//Hex kodunu verir

}
if(RfChip.uid.uidByte[0]==0x73 && RfChip.uid.uidByte[1]==0x85 && RfChip.uid.uidByte[2]==0x3F
&& RfChip.uid.uidByte[3]==0x25)
{
lcd.cls();
lcd.printf("Giris Basarili");
led=1;
wait(3);
ekran();
sayac=0;
led=0;
yanlis=0;
}
else
{
lcd.cls();
lcd.printf("Gecersiz Kart !!");
wait(3);
ekran();
}
printf("\n\r");

// Print Card type
uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
printf("Kart Tipi: %s \n\r", RfChip.PICC_GetTypeName(piccType));
}
}
//rfid

void ekran()
{
lcd.cls();
lcd.locate(0,0);//1. satır 1. digit
lcd.printf("Sifre:");

//dizi içeriğini temizlemek için kullanıldı
for(char temizle=0; temizle<6; temizle++) {
sifre[temizle]=0;
}
}

void saat()
{
      while(true)
   {
   for(unsigned char saat=0;saat<12;saat++)
   {
      for(unsigned char dakika=0;dakika<60;dakika++)
   {
        for(unsigned char saniye=0;saniye<60;saniye++)
   {
       lcd.locate(0,1);
       lcd.printf("%.2d:%.2d:%.2d",saat,dakika,saniye);
       wait(1);
       }
       }
       }
       }
    }

int main()
{
    is1.start(saat);
    is2.start(kartokuma);
ekran();
pc.baud(250000);
uint32_t key_num;

while(true) {


if ((key_num = key.read()) != 0 && sure.read()==0 && kontrol==false){
lcd.printf("*");
sifre[sayac]=*(key_table + key_num-1);
sayac++;
}
if(sifre[0]=='1' && sifre[1]=='2' && sifre[2]=='3'
&& sifre[3]=='A' && sifre[4]=='B' && sifre[5]=='C') {
lcd.cls();
lcd.printf("Giris Basarili");
led=1;
wait(3);
ekran();
sayac=0;
led=0;
yanlis=0;
} else if(sayac>5) {

kontrol=true;
sayac=0;
lcd.cls();
lcd.printf("Sifre yanlis");
wait(3);
kontrol=false;
yanlis++;
if(yanlis>2) {
sure.start();
lcd.cls();
lcd.printf("Sistem Kitlendi");
while(sure.read()<60) {
lcd.locate(0,1);
lcd.printf("%.0f",sure.read());
led=1;
wait_ms(500);
led=0;
wait_ms(500);
}
yanlis=0;
sure.reset();//timer 0 snye çeker
sure.stop();
//sure.stop();//timer durur
}
ekran();
}


}
}