Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

4x4 Keypad Arduino Bağlantısı ve Şifreli Kilit

4x4 Keypad Arduino Bağlantısı ve Şifreli Kilit
Kısa cevap

4x4 membran keypad Arduino'ya sekiz kabloyla bağlanır: dört satır pini (R1–R4) ve dört sütun pini (C1–C4) sekiz dijital pine gider. Keypad kütüphanesi satır ve sütunları sırayla tarayıp basılan tuşu karakter olarak verir. Bu yapıyla birkaç satır kodla şifreli kilit kurulabilir; şifre # tuşuyla onaylanır, * tuşuyla silinir.

Şifreli kapı kilidi, kasa, menü girişi ya da sayısal değer ayarlama gibi projelerde kullanıcıdan rakam almanın en kolay yolu tuş takımıdır. 4x4 membran keypad ince, yapışkan sırtlı ve ucuz bir çözümdür; 16 tuşu yalnızca 8 pinle okur. Bu yazıda keypad'in iç yapısını, Arduino bağlantısını, Keypad kütüphanesiyle tuş okumayı ve röle ile çalışan basit bir şifreli kilit örneğini anlatıyoruz.

4x4 keypad nedir?

4x4 keypad, dört satır ve dört sütun hâlinde dizilmiş 16 tuştan oluşan, her tuşun bir satır hattıyla bir sütun hattını birbirine bağladığı matris yapıda bir tuş takımıdır. Tuşlarda genellikle 0–9 rakamları, A, B, C, D harfleri ile * ve # işaretleri bulunur.

Matris yapı sayesinde 16 ayrı buton için 16 pin yerine 8 pin yeterlidir. Membran tiplerde tuşlar ince bir plastik katmanın altındaki iletken izlerden oluşur; matris tipli sert tuşlu modellerde ise her tuşun altında küçük bir buton bulunur. Buton türleri hakkında daha fazlası için buton çeşitleri yazımıza bakabilirsiniz.

Keypad matris tarama nasıl çalışır?

Keypad, satırlar ve sütunlar sırayla taranarak okunur: mikrodenetleyici bir sütunu LOW yapar, satırları okur ve LOW gördüğü satırla o sütunun kesiştiği tuşu basılı kabul eder. Keypad kütüphanesi satır pinlerini dahili pull-up dirençli giriş yapar, sütunları ise teker teker LOW'a çeker.

Bu işlem saniyede çok kez tekrarlandığı için kullanıcıya anlık gibi görünür. Kütüphane ayrıca tuşun sıçramasını (debounce) da giderir; ayrı bir gecikme kodu yazmanız gerekmez. Basit membran keypad'lerde tuşlarda diyot bulunmadığı için aynı anda üç ya da daha fazla tuşa basıldığında hayalet tuş (ghosting) görülebilir; şifre girişi gibi tek tuşlu kullanımda bu bir sorun yaratmaz.

4x4 keypad Arduino'ya nasıl bağlanır?

4x4 keypad'in sekiz pini Arduino Uno'nun D9'dan D2'ye kadar olan dijital pinlerine sırayla bağlanır: R1–R4 satır pinleri D9, D8, D7, D6'ya; C1–C4 sütun pinleri D5, D4, D3, D2'ye. Çoğu membran keypad'de, tuşlar önden bakıldığında soldaki ilk dört pin satırlar, sağdaki dört pin sütunlardır.

Keypad piniHatArduino Uno
1R1 (1 2 3 A)D9
2R2 (4 5 6 B)D8
3R3 (7 8 9 C)D7
4R4 (* 0 # D)D6
5C1 (1 4 7 *)D5
6C2 (2 5 8 0)D4
7C3 (3 6 9 #)D3
8C4 (A B C D)D2
4x4 membran keypad Arduino Uno bağlantı şeması: 1–4 numaralı satır pinleri R1, R2, R3, R4 sırasıyla D9, D8, D7, D6 pinlerine; 5–8 numaralı sütun pinleri C1, C2, C3, C4 sırasıyla D5, D4, D3, D2 pinlerine
Satır pinleri R1–R4 D9–D6'ya, sütun pinleri C1–C4 D5–D2'ye gider. Keypad'in besleme pini yoktur.
  1. Keypad'in şerit kablosundaki sekiz pine erkek-erkek jumper kablo takın.
  2. Tabloya göre 1–4 numaralı pinleri D9, D8, D7, D6'ya bağlayın.
  3. 5–8 numaralı pinleri D5, D4, D3, D2'ye bağlayın.
  4. Arduino IDE'de Kütüphane Yöneticisi'nden Mark Stanley ve Alexander Brevig'in Keypad kütüphanesini kurun.
  5. Aşağıdaki kodu yükleyip Seri Monitör'ü açın ve her tuşa basarak doğru karakterin geldiğini kontrol edin.

Keypad'in GND ya da VCC pini yoktur; besleme gerekmez. Pin sırası üreticiye göre değişebileceği için yanlış karakter gelirse multimetrenin süreklilik kademesiyle hangi pinin hangi satıra gittiğini bulun. Arduino PIC ARM 4x4 membran tuş takımı ve 4x4 membran tuş takımı bu bağlantıya uygun yapışkan sırtlı modellerdir. Daha sert bir tuş hissi isterseniz 16 butonlu 4x4 matrix tuş takımı tercih edilebilir.

Keypad kütüphanesi ile tuş nasıl okunur?

Keypad kütüphanesinde tuş haritası bir karakter dizisi olarak tanımlanır ve getKey() fonksiyonu basılan tuşun karakterini döndürür; tuşa basılmadıysa boş değer döner.

#include <Keypad.h>

const byte SATIR = 4;
const byte SUTUN = 4;
char tuslar[SATIR][SUTUN] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte satirPinleri[SATIR] = {9, 8, 7, 6};
byte sutunPinleri[SUTUN] = {5, 4, 3, 2};
Keypad tusTakimi = Keypad(makeKeymap(tuslar), satirPinleri, sutunPinleri, SATIR, SUTUN);

void setup() {
  Serial.begin(9600);
}

void loop() {
  char tus = tusTakimi.getKey();
  if (tus) Serial.println(tus);
}

Kodda delay() kullanmaktan kaçının; getKey() sık çağrılmazsa tuş basışları kaçabilir. Tuş haritasını değiştirerek keypad'inizdeki harfleri ve işaretleri istediğiniz karakterlere atayabilirsiniz.

Keypad ile şifreli kilit nasıl yapılır?

Şifreli kilit için basılan rakamlar bir metinde biriktirilir, # tuşuna basıldığında kayıtlı şifreyle karşılaştırılır ve doğruysa röle kısa bir süre çekilir; * tuşu girişi siler. Aşağıdaki örnekte röle modülü D10'a, aktif buzzer D11'e bağlıdır.

// Önceki koddaki tanımlar ve tusTakimi nesnesi aynen kalır
const char SIFRE[] = "1234";
const int ROLE = 10;
const int BUZZER = 11;
String girilen = "";

void setup() {
  pinMode(ROLE, OUTPUT);
  pinMode(BUZZER, OUTPUT);
}

void loop() {
  char tus = tusTakimi.getKey();
  if (!tus) return;
  if (tus == '*') { girilen = ""; return; }
  if (tus == '#') {
    if (girilen == SIFRE) {
      digitalWrite(ROLE, HIGH);
      delay(3000);
      digitalWrite(ROLE, LOW);
    } else {
      digitalWrite(BUZZER, HIGH);
      delay(500);
      digitalWrite(BUZZER, LOW);
    }
    girilen = "";
    return;
  }
  if (girilen.length() < 8) girilen += tus;
}

Röle olarak 5V tek kanal röle modülü, uyarı sesi için 5V aktif buzzer kullanılabilir. Bazı röle modülleri LOW ile tetiklenir; modülünüz bu tipteyse koddaki HIGH ve LOW değerlerini yer değiştirin. Rölenin COM, NO ve NC uçlarını kilide nasıl bağlayacağınızı röle modülü nasıl kullanılır yazımızda anlattık.

Güvenlik uyarısı: Solenoid kilit gibi bobinli yükler kendi güç kaynağından beslenmeli, bobine ters bağlı bir diyot eklenmelidir. Bu örnek eğitim amaçlıdır; şifre kodun içinde açık durduğu ve kart sıfırlanabildiği için gerçek bir kapıyı korumak için tek başına yeterli değildir. Kartla açılan bir kilit isterseniz RFID ile kartlı kilit yazımıza bakabilirsiniz. Diğer tuş takımı modellerini mağazamızın tuş takımı kategorisinde bulabilirsiniz.

Sık sorulan sorular

Keypad neden yanlış tuşu gösteriyor?

Keypad yanlış tuş gösteriyorsa en sık neden, pin sırasının koddaki satır ve sütun dizileriyle eşleşmemesidir. Örneğin 1 tuşu 4 olarak geliyorsa satır pinleri, 1 tuşu 2 olarak geliyorsa sütun pinleri karışmıştır. Koddaki satirPinleri ve sutunPinleri dizilerinin sırasını değiştirin ya da multimetrenin süreklilik kademesiyle her tuşun hangi iki pini birleştirdiğini ölçün.

4x4 keypad 3x4 keypad yerine kullanılır mı?

Evet, 4x4 keypad 3x4 keypad'in yerine kullanılabilir; yalnızca kodda dört sütun tanımlanır ve fazladan bir pin bağlanır. 3x4 modelde A, B, C, D harflerinin bulunduğu sütun yoktur ve yedi pin kullanılır. Projeniz yalnızca rakam ve * ile # istiyorsa 3x4 model bir pin tasarrufu sağlar. Ek menü tuşları gerekiyorsa 4x4 model daha esnektir.

Keypad için kaç pin gerekir, azaltılabilir mi?

4x4 keypad doğrudan bağlantıda sekiz dijital pin kullanır. Pinler yetmiyorsa I2C ile çalışan bir port genişletici entegre (örneğin PCF8574 tabanlı kart) kullanılarak keypad yalnızca iki hatla okunabilir. Bir başka yöntem, her tuşa farklı direnç değeri vererek tek bir analog pinle okumaktır; ancak bu yöntem gürültüye daha duyarlıdır ve kalibrasyon ister.

Keypad ESP32 ile çalışır mı?

Evet, keypad ESP32 ile de çalışır ve Keypad kütüphanesi ESP32'yi destekler. Keypad pasif bir bileşen olduğu için gerilim farkı sorun yaratmaz; satırlar ESP32'nin dahili pull-up dirençleriyle 3,3V'a çekilir. Yalnızca 34, 35, 36 ve 39 numaralı pinleri kullanmayın; bu pinler yalnızca giriştir ve dahili pull-up dirençleri yoktur. Önyüklemeyi etkileyen pinlerden de kaçının.

Özet

  • 4x4 keypad 16 tuşu dört satır ve dört sütun hattıyla, toplam 8 pinle okur.
  • Örnek bağlantı: R1–R4 satırları D9–D6'ya, C1–C4 sütunları D5–D2'ye.
  • Keypad kütüphanesi taramayı ve debounce'u yapar; getKey() basılan tuşu verir.
  • Şifreli kilitte rakamlar biriktirilir, # ile kontrol edilir, * ile silinir; doğru şifrede röle çekilir.
  • Yanlış tuş geliyorsa koddaki pin dizilerinin sırası ya da keypad'in pin sırası kontrol edilir.

Bu yazıdaki ürünler

Diğer yazılar