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.
- Mikrodenetleyici tüm sütun ve satır veri girişini algılar.
- Ardından, bir satır seçer ve seçtiği satırı HIGH ayarlar.
- Bundan sonra, sütun çizgilerini birer birer kontrol eder.
- Sütun bağlantısı LOW kalırsa, satırdaki düğmeye basılmamıştır.
- HIGH ise, mikro denetleyici hangi sıranın HIGH olarak ayarlandığını kontrol eder ve tespit eder.
- 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: