Keypad Uygulaması

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.
}

Benzer Temrinler & Yazılar

  • Reed Switch’le Dijital Giriş Uygulaması

    Görselde kullanılan reed röle modülüne mıknatıs yaklaştırıldığında veya manyetik alan içine girdiğinde D0 çıkışı lojik 1 olmaktadır. Modül üzerinde besleme (5 V), GND ve D0 dijital çıkışpini yer almaktadır. Mıknatıs yaklaştırıldığında D0 pininden 5 V (1) çıkış vermektedir ve aynı zamanda üzerindeki LED de yanmaktadır. Bazı modüllerde A0 analog çıkış pini de bulunmaktadır. const byte…

  • Parmak İzi Okuma Uygulaması

    Görseldeki parmak izi okuma uygulaması görülmektedir. UART haberleşme protokolü kullanılan sensör Arduino’da SoftwareSerial kütüphanesi kullanılarak 2 ve 3 numaralı pinlere bağlanmıştır. Görselde parmak izi sensörünün pin yapısı verilmiştir. Parmak izi kaydetme programıyla kaydedilen parmak izleri, parmak izi okuma programıyla test edilir. İşlemler seri ekran kullanılarak yapılır. VCC: 3,3 V-5 V besleme. GND: Topraklama pini. TX:…

  • Akıllı Ev Isıtma Uygulaması NodeMCU 1.0 (ESP-12E)

    Görseldeki devre, bulunduğu ortamın nem ve sıcaklık bilgisini firebase veritabanına yazar. Görseldeki akıllı telefon uygulamasından bu değerler okunur. NodeMCU kartına bağlı ısıtıcı internet üzerinden kontrol edilir. #include <ESP8266WiFi.h> // NodeMCU kurulumuyla gelir. #include <FirebaseESP8266.h> // FirebaseESP8266 Client v3.8.3 ve Firabasejson v2.6.3 #include "DHT.h" // Adafruit DHT Sensor Library v1.2.3 #define DHTpin 4 // Sensörün bağlandığı…

  • IR ile Uzaktan Kumanda Uygulaması

    Görselde IR ile uzaktan kumanda uygulaması görülmektedir. Burada kullanılan kumandalarda her tuşun farklı bir kodu vardır. Kullanılmak istenen tuşun kodunu öğrenebilmek için menülerden “Taslak  Library Ekle  Kütüphaneleri Yönet” seçeneğinden arama kutusuna “IRremote” yazılarak “IRremote” kütüphanesi bulunur ve kurulur. Menülerden “Taslak  Library Ekle  IRremote” seçilerek programın başına eklenir. Aşağıdaki program herhangi bir…

  • Bluetooth Uygulaması

    Bluetooth modülle haberleşmek için telefondan bluetooth bağlantısı açılarak hc-05 cihazı bulunur ve “Bluetooth aygıtını seç” düğmesiyle hc-05 seçilir. Varsayılan şifre “1234” veya “0000” dır.Bluetooth ile “A” harfi gönderilerek LED yakılır, “B” harfi gönderilerek LED söndürülür (Görseldeki). Bluetooth uygulama devresi Görselde görülmektedir. void setup() { pinMode(13, OUTPUT); Serial.begin(9600); // Bluetooth ile seri iletişimi başlat. } void…

  • Yaklaşım Dedektörü Devresi

    Görseldeki yaklaşım sensörü modülü ve pin yapısı görülmektedir. Sensör modülü bir çift IR alıcı verici LED’e sahiptir.  Verici LED kızılötesi frekansta ışık verir. 2 cm-35 cm aralığında bulunan engelin yüzeyine çarpıp yansıyan ışık alıcı sensör tarafından okunur. Dijital çıkış veren modül üzerindeki yeşil ışık yanar ve dijital çıkıştan da LOW (lojik 0) okunur. Algılama uzaklığı…

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacaktır. Gerekli alanlar * ile işaretlenmiştir.