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(); } } }