Keypad kullanimi

Dependencies:   mbed mbed-rtos MFRC522 TextLCD keypad

Committer:
marvas
Date:
Tue Oct 15 08:33:16 2019 +0000
Revision:
3:03b1e1ac067d
Parent:
2:e0df3db0da50
rfid rtos

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marvas 1:2fd11c224867 1 #include "mbed.h"
marvas 1:2fd11c224867 2 #include "Keypad.h"
marvas 1:2fd11c224867 3 #include "TextLCD.h"
marvas 2:e0df3db0da50 4 #include "MFRC522.h"
marvas 2:e0df3db0da50 5 #include "rtos.h"
marvas 2:e0df3db0da50 6 Thread is1,is2;
marvas 2:e0df3db0da50 7 Timer sure;
marvas 2:e0df3db0da50 8 DigitalOut led(D13);
marvas 1:2fd11c224867 9 TextLCD lcd(D11, D12, D7, D8, D9, D10); // rs, e, d4-d7
marvas 0:66860685087d 10 Keypad key(PC_4, PB_13, PB_14, PB_15, PB_1, PB_2, PB_12, PA_11);
marvas 2:e0df3db0da50 11 void ekran();
marvas 2:e0df3db0da50 12 void kartokuma();
marvas 1:2fd11c224867 13 char key_table[] = {
marvas 2:e0df3db0da50 14 '1', '2', '3', 'A',
marvas 2:e0df3db0da50 15 '4', '5', '6', 'B',
marvas 2:e0df3db0da50 16 '7', '8', '9', 'C',
marvas 2:e0df3db0da50 17 'C', '0', '#', 'D'
marvas 1:2fd11c224867 18 };
marvas 1:2fd11c224867 19 Serial pc(USBTX,USBRX);
marvas 2:e0df3db0da50 20 char sifre[6];
marvas 2:e0df3db0da50 21 char sayac=0,yanlis=0;
marvas 2:e0df3db0da50 22 bool kontrol=false;
marvas 2:e0df3db0da50 23 //rfid
marvas 2:e0df3db0da50 24 #define SPI_MOSI D4
marvas 2:e0df3db0da50 25 #define SPI_MISO D5
marvas 2:e0df3db0da50 26 #define SPI_SCLK D3//SCK
marvas 2:e0df3db0da50 27 //sda ve rst pinleri farketmez
marvas 2:e0df3db0da50 28 #define SPI_CS D6//SDA
marvas 2:e0df3db0da50 29 // KL25Z Pin for MFRC522 reset
marvas 2:e0df3db0da50 30 #define MF_RESET D2//Rst pini
marvas 2:e0df3db0da50 31
marvas 2:e0df3db0da50 32 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCLK, SPI_CS, MF_RESET);
marvas 2:e0df3db0da50 33
marvas 2:e0df3db0da50 34
marvas 2:e0df3db0da50 35 void kartokuma()
marvas 1:2fd11c224867 36 {
marvas 2:e0df3db0da50 37 // Init. RC522 Chip
marvas 2:e0df3db0da50 38 RfChip.PCD_Init();
marvas 2:e0df3db0da50 39
marvas 2:e0df3db0da50 40 while (true) {
marvas 2:e0df3db0da50 41
marvas 2:e0df3db0da50 42
marvas 2:e0df3db0da50 43 // Look for new cards
marvas 2:e0df3db0da50 44 if ( ! RfChip.PICC_IsNewCardPresent())
marvas 2:e0df3db0da50 45 {
marvas 2:e0df3db0da50 46 wait_ms(500);
marvas 2:e0df3db0da50 47 continue;
marvas 2:e0df3db0da50 48 }
marvas 2:e0df3db0da50 49
marvas 2:e0df3db0da50 50
marvas 2:e0df3db0da50 51 // Select one of the cards
marvas 2:e0df3db0da50 52 if ( ! RfChip.PICC_ReadCardSerial())
marvas 2:e0df3db0da50 53 {
marvas 2:e0df3db0da50 54 wait_ms(500);
marvas 2:e0df3db0da50 55 continue;
marvas 1:2fd11c224867 56 }
marvas 1:2fd11c224867 57
marvas 2:e0df3db0da50 58 // Print Card UID
marvas 2:e0df3db0da50 59 printf("Kart ID: ");
marvas 2:e0df3db0da50 60 for (uint8_t i = 0; i < RfChip.uid.size; i++)
marvas 2:e0df3db0da50 61 {
marvas 2:e0df3db0da50 62 printf(" %X ", RfChip.uid.uidByte[i]);//Hex kodunu verir
marvas 2:e0df3db0da50 63
marvas 2:e0df3db0da50 64 }
marvas 2:e0df3db0da50 65 if(RfChip.uid.uidByte[0]==0x73 && RfChip.uid.uidByte[1]==0x85 && RfChip.uid.uidByte[2]==0x3F
marvas 2:e0df3db0da50 66 && RfChip.uid.uidByte[3]==0x25)
marvas 2:e0df3db0da50 67 {
marvas 2:e0df3db0da50 68 lcd.cls();
marvas 2:e0df3db0da50 69 lcd.printf("Giris Basarili");
marvas 2:e0df3db0da50 70 led=1;
marvas 2:e0df3db0da50 71 wait(3);
marvas 2:e0df3db0da50 72 ekran();
marvas 2:e0df3db0da50 73 sayac=0;
marvas 2:e0df3db0da50 74 led=0;
marvas 2:e0df3db0da50 75 yanlis=0;
marvas 2:e0df3db0da50 76 }
marvas 2:e0df3db0da50 77 else
marvas 2:e0df3db0da50 78 {
marvas 2:e0df3db0da50 79 lcd.cls();
marvas 2:e0df3db0da50 80 lcd.printf("Gecersiz Kart !!");
marvas 2:e0df3db0da50 81 wait(3);
marvas 2:e0df3db0da50 82 ekran();
marvas 2:e0df3db0da50 83 }
marvas 2:e0df3db0da50 84 printf("\n\r");
marvas 2:e0df3db0da50 85
marvas 2:e0df3db0da50 86 // Print Card type
marvas 2:e0df3db0da50 87 uint8_t piccType = RfChip.PICC_GetType(RfChip.uid.sak);
marvas 2:e0df3db0da50 88 printf("Kart Tipi: %s \n\r", RfChip.PICC_GetTypeName(piccType));
marvas 2:e0df3db0da50 89 }
marvas 2:e0df3db0da50 90 }
marvas 2:e0df3db0da50 91 //rfid
marvas 2:e0df3db0da50 92
marvas 2:e0df3db0da50 93 void ekran()
marvas 2:e0df3db0da50 94 {
marvas 2:e0df3db0da50 95 lcd.cls();
marvas 2:e0df3db0da50 96 lcd.locate(0,0);//1. satır 1. digit
marvas 2:e0df3db0da50 97 lcd.printf("Sifre:");
marvas 2:e0df3db0da50 98
marvas 2:e0df3db0da50 99 //dizi içeriğini temizlemek için kullanıldı
marvas 2:e0df3db0da50 100 for(char temizle=0; temizle<6; temizle++) {
marvas 2:e0df3db0da50 101 sifre[temizle]=0;
marvas 2:e0df3db0da50 102 }
marvas 2:e0df3db0da50 103 }
marvas 1:2fd11c224867 104
marvas 2:e0df3db0da50 105 void saat()
marvas 2:e0df3db0da50 106 {
marvas 2:e0df3db0da50 107 while(true)
marvas 2:e0df3db0da50 108 {
marvas 2:e0df3db0da50 109 for(unsigned char saat=0;saat<12;saat++)
marvas 2:e0df3db0da50 110 {
marvas 2:e0df3db0da50 111 for(unsigned char dakika=0;dakika<60;dakika++)
marvas 2:e0df3db0da50 112 {
marvas 2:e0df3db0da50 113 for(unsigned char saniye=0;saniye<60;saniye++)
marvas 2:e0df3db0da50 114 {
marvas 2:e0df3db0da50 115 lcd.locate(0,1);
marvas 2:e0df3db0da50 116 lcd.printf("%.2d:%.2d:%.2d",saat,dakika,saniye);
marvas 2:e0df3db0da50 117 wait(1);
marvas 2:e0df3db0da50 118 }
marvas 2:e0df3db0da50 119 }
marvas 2:e0df3db0da50 120 }
marvas 2:e0df3db0da50 121 }
marvas 2:e0df3db0da50 122 }
marvas 1:2fd11c224867 123
marvas 2:e0df3db0da50 124 int main()
marvas 2:e0df3db0da50 125 {
marvas 2:e0df3db0da50 126 is1.start(saat);
marvas 3:03b1e1ac067d 127 is2.start(kartokuma);
marvas 2:e0df3db0da50 128 ekran();
marvas 2:e0df3db0da50 129 pc.baud(250000);
marvas 2:e0df3db0da50 130 uint32_t key_num;
marvas 2:e0df3db0da50 131
marvas 2:e0df3db0da50 132 while(true) {
marvas 2:e0df3db0da50 133
marvas 1:2fd11c224867 134
marvas 2:e0df3db0da50 135 if ((key_num = key.read()) != 0 && sure.read()==0 && kontrol==false){
marvas 2:e0df3db0da50 136 lcd.printf("*");
marvas 2:e0df3db0da50 137 sifre[sayac]=*(key_table + key_num-1);
marvas 2:e0df3db0da50 138 sayac++;
marvas 2:e0df3db0da50 139 }
marvas 2:e0df3db0da50 140 if(sifre[0]=='1' && sifre[1]=='2' && sifre[2]=='3'
marvas 2:e0df3db0da50 141 && sifre[3]=='A' && sifre[4]=='B' && sifre[5]=='C') {
marvas 2:e0df3db0da50 142 lcd.cls();
marvas 2:e0df3db0da50 143 lcd.printf("Giris Basarili");
marvas 2:e0df3db0da50 144 led=1;
marvas 2:e0df3db0da50 145 wait(3);
marvas 2:e0df3db0da50 146 ekran();
marvas 2:e0df3db0da50 147 sayac=0;
marvas 2:e0df3db0da50 148 led=0;
marvas 2:e0df3db0da50 149 yanlis=0;
marvas 2:e0df3db0da50 150 } else if(sayac>5) {
marvas 2:e0df3db0da50 151
marvas 2:e0df3db0da50 152 kontrol=true;
marvas 2:e0df3db0da50 153 sayac=0;
marvas 1:2fd11c224867 154 lcd.cls();
marvas 2:e0df3db0da50 155 lcd.printf("Sifre yanlis");
marvas 2:e0df3db0da50 156 wait(3);
marvas 2:e0df3db0da50 157 kontrol=false;
marvas 2:e0df3db0da50 158 yanlis++;
marvas 2:e0df3db0da50 159 if(yanlis>2) {
marvas 2:e0df3db0da50 160 sure.start();
marvas 2:e0df3db0da50 161 lcd.cls();
marvas 2:e0df3db0da50 162 lcd.printf("Sistem Kitlendi");
marvas 2:e0df3db0da50 163 while(sure.read()<60) {
marvas 2:e0df3db0da50 164 lcd.locate(0,1);
marvas 2:e0df3db0da50 165 lcd.printf("%.0f",sure.read());
marvas 2:e0df3db0da50 166 led=1;
marvas 2:e0df3db0da50 167 wait_ms(500);
marvas 2:e0df3db0da50 168 led=0;
marvas 2:e0df3db0da50 169 wait_ms(500);
marvas 2:e0df3db0da50 170 }
marvas 2:e0df3db0da50 171 yanlis=0;
marvas 2:e0df3db0da50 172 sure.reset();//timer 0 snye çeker
marvas 2:e0df3db0da50 173 sure.stop();
marvas 2:e0df3db0da50 174 //sure.stop();//timer durur
marvas 2:e0df3db0da50 175 }
marvas 2:e0df3db0da50 176 ekran();
marvas 1:2fd11c224867 177 }
marvas 1:2fd11c224867 178
marvas 1:2fd11c224867 179
marvas 1:2fd11c224867 180 }
marvas 1:2fd11c224867 181 }