1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

Arduino ile 4x4 Membran Tuş Takımı Keypad Kullanımı | Robocombo

Arduino ile 4x4 Membran Tuş Takımı Keypad Kullanımı | Robocombo
Merhaba arkadaşlar, membran tuş takımı konusunu bugün ele alacağız. Hadi birlikte Arduino ile Membran Tuş Takımı Kullanımı konusunu inceleyelim ve arduino ile bağlayarak bir uygulama yapalım. Membran matrix keypad tuş takımları cep telefonlarında, hesap makinelerinde, mikrodalga fırınlarda, kapı kilitlerinde vb. gördüğünüz tuş takımlarıdır. Bununla birlikte, arduino projelerinde, menülerde gezinmek, şifre girmek ve robotları kontrol etmek için kullanılabilir.  

Donanıma Genel Bakış - Membran Tuş Takımı

Membran tuş takımları ince, esnek bir plastik malzemeden yapılmıştır. 4×3, 4×4, 4×1 vb. boyutlarda olabilirler. Boyutlarından bağımsız olarak, hepsi aynı şekilde çalışır. Altta membran örnek görsellerini görebilirsiniz.

 

Örnek olarak 4×4 tuş takımını ele alalım. Toplam 16 tuşa sahiptir. Her tuşun altında özel bir membran anahtarı bulunur. Tüm bu membran anahtarları, 4× ızgaralı bir matris oluşturan pedin altında iletken çizgi ile birbirine bağlanır.

 
Matris mantığı olmasaydı 16 ayrı basma düğmesinin çalışması için 17 giriş pini (her tuş için bir tane ve bir toprak pini) gerekirdi. Bununla birlikte, matris düzenlemesi ile, altlığı taramak için yalnızca 8 mikrodenetleyici pini (4 sütun ve 4 sıra) yeterli olmaktadır.  

4×3 ve 4×4 Membran Tuş Takımı Pinout

4×3 ve 4×4 membran tuş takımılarının pin çıkışları aşağıdaki gibidir.

Tuş Takımı Nasıl Çalışır ve Nasıl Taranır? - Matris

Çalışma prensibi çok basittir. Bir düğmeye basılması, bulunduğu satır ve sütun üzerinde kısa devre yaparak akımlar geçmesine vesile olur. Örneğin, 4 tuşuna basıldığında, sütun 1 ve satır 2 kestirme yolu kullanılır.

 
Mikrodenetleyici, basılan tuşları tarayabilir. Bunu yapmak için aşağıdaki prosedürü takip eder.
  1. Mikrodenetleyici tüm sütun ve satır veri girişini algılar.
  2. Ardından, bir satır seçer ve seçtiği satırı HIGH ayarlar.
  3. Bundan sonra, sütun çizgilerini birer birer kontrol eder.
  4. Sütun bağlantısı LOW kalırsa, satırdaki düğmeye basılmamıştır.
  5. HIGH ise, mikro denetleyici hangi sıranın HIGH olarak ayarlandığını kontrol eder ve tespit eder.
  6. Son olarak, algılanan satır ve sütuna karşılık gelen hangi düğmeye basıldığını bilir.
 

Arduino ile 4×3 ve 4×4 Membran Tuş Takımı Bağlantısı - Kablolama

Tuş takımı konusunda yeteri kadar bilgi sahibi olduğumuza göre arduino ile bağlamaya başlayabiliriz. Bağlantı oldukça basittir. Tuş takımının pimini Arduino'daki dijital pim 9'a bağlayarak başlayın. Şimdi pimleri 2, 8, 3, 7 vb. gibi sola doğru bağlamaya devam edin.

Tuş Takımı Kitaplığını Yükleme

Hangi tuşa basıldığını belirlemek için satırları ve sütunları sürekli olarak taramamız gerekir. Neyse ki, Keypad.h bu karmaşıklığı gizlemek için yazılmıştır, böylece hangi tuşa basıldığını bilmek için basit komutlar verebiliriz. Kitaplığı yüklemek için Taslak> Library Ekle> Kütüphaneleri Yönet… 'e gidin. Kitaplık Yöneticisi'nin kitaplıklar dizinini indirmesini ve yüklü kitaplıkların listesini güncellemesini bekleyin.

Keypad yazarak aramanızı filtreleyin. Çıkan seçenekler içerisinde yaklaşık 8'inci satırda by Mark Stanley, Alexander Brevig olan kütüphaneyi kurun.

 

Arduino Kodu

Aşağıdaki kodlar, 4×3 ve 4×4 tuş takımı üzerinde tuşa basarak oluşturulan veri girişlerini görebileceğiniz bir proje temeli oluşturabilirsiniz.  

4×3 Tuş Takımı için kod

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns

char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3}; //connect to the column pinouts of the keypad

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();// Read the key
  
  // Print if key pressed
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

4×4 Tuş Takımı Kodu

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns

char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

//Create an object of keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();// Read the key
  
  // Print if key pressed
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

Ekran görüntüsü şu şekildedir.

 

Kod Açıklaması

Kod, Keypad.h kütüphanesini ekleyerek ve kullanmak istediğiniz tuş takımındaki satır ve sütun sayısını tanımlayarak başlar. Daha sonra keys[ROWS][COLS] kodu ile tuş takımında belirli bir düğmeye basıldığında yazdırılacak karakterleri tutan 2 boyutlu bir tuş haritası dizisi tanımlarız. Kod içerisinde karakterler, tıpkı tuş takımında göründükleri gibi düzenlenir. Aslında bunları istediğiniz herhangi bir şey olarak tanımlayabilirsiniz. Örneğin, bir hesap makinesi projesi oluşturmayı planlıyorsanız, dizi tanımını şu şekilde değiştirebilirsiniz:
char keys[ROWS][COLS] = {
  {'1','2','3','4'},
  {'5','6','7','8'},
  {'9','0','+','-'},
  {'.','*','/','='}
};

Ardından, tuş takımı kütüphanesinin bir nesnesini oluştururuz. Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS ) kodu 5 parametre alır.
  • makeKeymap(keys) kodu dahili tuş eşlemesini kullanıcı tanımlı tuş eşlemesine eşit olacak şekilde başlatır.
  • rowPins ve colPins tuş takımının satır ve sütunlarının bağlandığı arduino pinleridir.
  • ROWS ve COLS tuş takımının satır ve sütun sayısıdır.
Bir tuş takımı nesnesi oluşturulduğunda getKey() varsa hangi tuşa basıldığını kontrol etmek için basit bir komut verebiliriz.  

Tuş Takımı Kitaplığındaki Diğer Yararlı İşlevler

Tuş takımı için kullanabileceğiniz birkaç kullanışlı kod vardır. Bunlardan birkaçı aşağıda listelenmiştir:
  • char waitForKey() birisi bir tuşa basana kadar bekler. Yani bir tuşa basılana kadar diğer tüm kodları engeller.
  • KeyState getState() tuşlardan herhangi birinin geçerli durumunu Return ettirir. IDLE, PRESSED, RELEASEDHOLD.
  • boolean keyStateChanged() anahtarın bir durumdan diğerine ne zaman değiştiğini bilmemize yarar. Örneğin, sadece geçerli bir anahtarı test etmek yerine, bir tuşa ne zaman basıldığını test edebilirsiniz.
  • setHoldTime(unsigned int time) HOLD durumunu değiştirecek düğme basılı tutma milisaniye miktarını ayarlar.
  • setDebounceTime(unsigned int time) tuş takımının yeni bir keypress / keyEvent öğesini kabul edene kadar bekleyeceği milisaniye miktarını ayarlar.
  • addEventListener(keypadEvent) hangi tuş takımı kullanılırsa o eylemi tetikler.
Etiketler: Arduino ile 4x4 Membran Tuş Takımı Keypad Kullanımı
Kasım 15, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.