Görseldeki devrede tuş takımı uygulaması verilmiştir. Keypad kütüphanesini kurmak için
menülerden ”Taslak Library Ekle Kütüphaneleri Yönet” seçeneğinden arama kutusuna
“Keypad” yazılıp Keypad (Keypad by Mark Stanley and Alexander Brevig) kütüphanesi bulunarak
kurulur. Daha sonra “Taslak Library Ekle Keypad” seçilerek programın başına eklenir. Bu
programın bir örneğine menülerden “Dosya Örnekler Keypad CustomKeypad” adımları
izlenerek de ulaşılır.
Kullanılan tuş takımının satır ve sütun bilgileri, tuş dizilimi ve Arduino’ya bağlanan pinlerin bilgileri belirlenen değişkenlere atanır. Daha sonra kütüphane komutuyla tuş haritası oluşturulur.
Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun);
Oluşturulan “tusTakimi” nesnesiyle kütüphane fonksiyonları çağrılır. tusTakimi.getKey()
fonksiyonu, basılan tuşa ait karakteri döndürür.
#include <Keypad.h> //Tuş takımı kütüphanesi. const byte satir = 4; //Dört satır. const byte sutun = 4; //Dört sütün. char tusDizilimi[satir][sutun] = {//Tuş takımındaki sebollerin dizilimini tanımlama. {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte satirPinleri[satir] = {9, 8, 7, 6}; //{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı. byte sutunPinleri[sutun] = {5, 4, 3, 2}; //{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı. //tusTakimi adında nesne oluşturma. Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun); void setup() { Serial.begin(9600); } void loop() { char tus = tusTakimi.getKey(); if (tus) { Serial.println(tus); } }
#include <Keypad.h> //Tuş takımı kütüphanesi. const byte satir = 4; //Dört satır. const byte sutun = 4; //Dört sütün. char tusDizilimi[satir][sutun] = {//Tuş takımındaki sebollerin dizilimini tanımlama. {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte satirPinleri[satir] = {9, 8, 7, 6}; //{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı. byte sutunPinleri[sutun] = {5, 4, 3, 2}; //{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı. //tusTakimi adında nesne oluşturma. Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun); void setup() { Serial.begin(9600); for (byte i = 0; i < 4; i++) { for (byte j = 0; j < 4; j++) { Serial.print(tusDizilimi[i][j]); Serial.print("\t"); delay(200); } Serial.println(); } } void loop() { /* char tus = tusTakimi.getKey(); if (tus) { Serial.println(tus); }*/ }
#include <Keypad.h> //Tuş takımı kütüphanesi. byte hane = 0, LED = 13; char sifre[] = "123ABC"; // Kullanılacak şifre. char giris[sizeof(sifre)]; //Şifre uzunluğu kadar dizi oluştur. //---Tuş takımı ayarları.--- const byte satir = 4; //Dört satır. const byte sutun = 4; //Dört sütün. char tusDizilimi[satir][sutun] = {//Tuş takımındaki sebollerin dizilimini tanımlama. {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte satirPinleri[satir] = {9, 8, 7, 6}; //{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı. byte sutunPinleri[sutun] = {5, 4, 3, 2}; //{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı. //tusTakimi adında nesne oluşturma. Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun); void setup() { Serial.begin(9600); Serial.println("Lütfen şifrenizi giriniz: "); } void loop() { char tus = tusTakimi.waitForKey(); //Tuşa basılana kadar bekle. Serial.print(tus); //Basılan tuşu ekrana yazdır. giris[hane] = tus; //Sırayla her tuşu giris dizisine yükle. hane++; if (hane == sizeof(sifre) - 1) { //Şifre uzunluğu kadar tuşa basıldığında... if (!strcmp(giris, sifre)) { //İki diziyi karşılaştır. Serial.println("\nŞifre doğru. Kapı açıldı"); digitalWrite(LED, HIGH); delay(1000); Serial.println("Lütfen şifrenizi giriniz: "); } else Serial.println("\nŞifre yanlış. Lütfen tekrar deneyiniz."); hane = 0; } }
#include <Keypad.h> // Tuş takımı kütüphanesi. #include <EEPROM.h> byte kullaniciSayisi = 0; // EEPROM hafızanın 0. baytında tutulacak. byte toplamKullaniciSayisi = 100; // Sistemi en fazla kaç kişi kullanacak. byte i, hane = 0, LED = 2, buzzer = 4; char girilenSifre[4]; // Dört haneli şifrenin her bir rakamını bir baytta tut. //---Tuş takımı ayarları.--- const byte satir = 4; // Dört satır. const byte sutun = 4; // Dört sütün. char tusDizilimi[satir][sutun] = { // Tuş takımındaki sebollerin dizilimini tanımlama. {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte satirPinleri[satir] = {18,19,21,22}; //{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı. byte sutunPinleri[sutun] = {23,25,26,27}; //{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı. //tusTakimi adında nesne oluşturma. Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun); void setup() { //EEPROM.write(0, 0); // Yönetici şifresini sıfırlamak için kullanılır (kullanıcı sayısı da sıfırlanır). Serial.begin(9600); pinMode(LED, OUTPUT); pinMode(buzzer, OUTPUT); kullaniciSayisi = EEPROM.read(0); // Cihaz yeniden başladığında kart sayısını EEPROM’dan al if (kullaniciSayisi == 0) { // Yönetici kartı sisteme tanımlı değilse... Serial.println("Lütfen yönetici şifresini giriniz."); sifreOku(); for (i = 0; i < 4; i++) { EEPROM.write(1 + i, girilenSifre[i]); // 1. adresten itibaren 4 haneli şifreyi yaz. } // Yönetici şifresi EEPROM hafızanın 1. - 4. baytlarında tutulacak (İlk 5 bayt doldu.). EEPROM.write(0, 1); // İlk şifre yöneticinin. Kullanıcı sayısı 1 oldu. Serial.println("Yönetici şifresi hafızaya kaydedildi."); } } void loop() { sifreOku(); if (sifreKontrol()) sifreGecerli(); else sifreGecersiz(); } void sifreOku() { Serial.println("Lütfen şifrenizi giriniz: "); while (hane < 4) { // Dört kere tuşa basılacak. char tus = tusTakimi.waitForKey(); // Tuşa basılana kadar bekle. Serial.print(tus); // Basılan tuşu ekrana yazdır. girilenSifre[hane] = tus; // Sırayla her tuşu girilenSifre dizisine yükle. hane++; } hane = 0; // Sonaraki döngü için sıfırla. } void sifreGecerli() { Serial.println("\n Şifre doğru. Kapı açıldı"); digitalWrite(LED, HIGH); digitalWrite(buzzer, HIGH); // Dıııt. delay(2000); digitalWrite(LED, LOW); digitalWrite(buzzer, LOW); } void sifreGecersiz() { // Dıt dıt. Serial.println("\n Şifre yanlış. Lütfen tekrar deneyiniz."); digitalWrite(buzzer, HIGH); delay(500); digitalWrite(buzzer, LOW); digitalWrite(buzzer, HIGH); delay(500); digitalWrite(buzzer, LOW); } void yeniSifreKaydet() { Serial.println("\n Lütfen kaydedilecek yeni şifreyi giriniz: "); sifreOku(); kullaniciSayisi = EEPROM.read(0); // EEPROM'un 0. adresinden kullanıcı sayısını al. for (i = 0; i < 4; i++) { EEPROM.write(kullaniciSayisi * 4 + 1 + i, girilenSifre[i]); //Yeni şifreyi sıradaki dört byte'a yaz. } EEPROM.write(0, EEPROM.read(0) + 1); // Kart sayısını bir arttır. Serial.println(""); Serial.print(EEPROM.read(0)); Serial.print(". kullanıcı "); Serial.print(girilenSifre); Serial.println(" hafızaya kaydedildi."); } boolean sifreKontrol() { // Tüm EEPROM hafızayı tarar. Şifre geçerliye 1, değilse 0 döndürür. int j; byte k = 0; for (j = 1; j < toplamKullaniciSayisi * 4; j += 4) { /* Kayıtlı tüm kartlara bak. UNO hafızasına 1024/4=256 kart tanımlanabilir. j değişkeni kayıtlı kartların dört byte'lık ID'sinin ilk byte numarasını tutmaktadır.*/ for (i = 0; i < 4; i++) { // Dört haneli şifre dört byte yer kaplar. if (EEPROM.read(j + i) == girilenSifre[i]) { //Okunan kartı kayıtlı olanlarla karşılaştır. (5. byte'tan sonra) k++; if (k == 4) { // Tüm byte'lar doğrulandıysa... if (j == 1) // Okunan kart yönetici kartı ise... yeniSifreKaydet(); else return 1; // 1 döndür. (Geçerli bir kullanıcı şifresi). } } } } return 0; // Girilen şifre hafızda yoksa 0 döndür. }
No responses yet