Keypad kullanimi
Dependencies: mbed mbed-rtos MFRC522 TextLCD keypad
main.cpp@2:e0df3db0da50, 2019-10-15 (annotated)
- Committer:
- marvas
- Date:
- Tue Oct 15 08:23:48 2019 +0000
- Revision:
- 2:e0df3db0da50
- Parent:
- 1:2fd11c224867
- Child:
- 3:03b1e1ac067d
rtos dahil
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:e0df3db0da50 | 127 | ekran(); |
marvas | 2:e0df3db0da50 | 128 | pc.baud(250000); |
marvas | 2:e0df3db0da50 | 129 | uint32_t key_num; |
marvas | 2:e0df3db0da50 | 130 | |
marvas | 2:e0df3db0da50 | 131 | while(true) { |
marvas | 2:e0df3db0da50 | 132 | |
marvas | 2:e0df3db0da50 | 133 | kartokuma(); |
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 | } |