Bu blog yazımızda, Arduino ile keypad tuş takımı nasıl kullanılır bunu inceleyeceğiz. Öncelikle keypad Arduino'ya nasıl bağlanır, nasıl çalışır konularına değineceğiz. Ardından 2x16 lcd ekran ile kullanımına, son olarak ise 5v'luk bir röle ile birlikte kullanılıp akıllı kilit oluşturma projesinden bahsedeceğiz.
Bu örnekte 4X4 matris membran tuş takımı kullanacağız, ancak 3X4 matris tuş takımları için de kod ve bağlantı şemaları var. Membran tarzı tuş takımları çoğu proje için idealdir. Çünkü incedirler ve arka kısımlarındaki yapışkanlı yüzey sayesinde bir çok yere adapte edilebilirler.
Keypad Arduino Bağlantı Şeması
Çoğu membran tuş takımı için pin düzeni aşağıdaki gibidir.
3X4 veya 4X4 tuş takımlarını Arduino'nuza bağlamak için aşağıdaki bağlantıları kullanabilirsiniz.
Keypad Tuş Takımı Kütüphane
Mark Stanley ve Alexander Brevig'in Keypad kütüphanesini kullanacağız. Bu kütüphane pimleri ayarlamaya ve farklı sütunları ve satırları yoklamaya özen gösterir. Kütüphaneyi
buraya tıklayarak indirebilirsiniz.
Arduino Keypad Kodları
Tuş Takımı kitaplığı yüklendikten sonra, 4X4 tuş takımı kullanıyorsanız bu kodu Arduino'ya yükleyebilirsiniz:
#include
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
3X4 tuş takımı kullanıyorsanız, bu kodu kullanabilirsiniz:
#include
const byte ROWS = 4;
const byte COLS = 3;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
Yukarıdaki koddaki 3 ve 4 satırları tuş takımındaki satır ve sütun sayısını belirler.
6-11. Satırlar, tuş takımında belirli bir düğmeye basıldığında hangi karakterlerin yazdırılacağını tanımlar. Karakterler tıpkı tuş takımında göründükleri gibi düzenlenir. Tuş takımınızın farklı bir düzeni varsa, bir düğmeye bastığınızda hangi karakterlerin yazdırılacağını tanımlayabilirsiniz. Örneğin, tuş takımınızın solda sağ yerine bir harf sütunu olduğunu varsayalım. Bunu şu şekilde değiştirirsiniz:
Arduino Keypad LCD Ekran Uygulaması
Şimdi basılan tuşların LCD'ye nasıl yazdıracağımızı göreceğiz. 4X4 tuş takımlarında 8 pin ve 3X4 tuş takımlarında 7 pin kullanılır. Bu çok fazla kablo gerektirdiğinden bu projede i2c bağlantılı bir lcd ekran kullanmak çok daha iyi olacaktır.
Arduino'da I2C özellikli bir LCD kullanmak için Marco Schwartz tarafından geliştirilen
LiquidCrystal I2C kütüphanesini kurmanız gerekir.
Keypad ve Lcd Bağlantı Şeması
Aşağıda yer alan bağlantı şeması ile, keypad ve lcd ekran Arduino'ya bağlanabilir.
Yazılım:
#include
#include
#include
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x21, 16, 2);
void setup(){
lcd.backlight();
lcd.init();
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(customKey);
}
}
20'nci satırdaki LCD'nizin I2C adresini eklemeniz gerekir:
LiquidCrystal_I2C lcd (0x21, 16, 2);
LCD'imin I2C adresi 0x21, ancak muhtemelen farklı olacak. LCD'nizin I2C adresi veri sayfasında sağlanmalıdır, ancak değilse, bu
I2C_Scanner'ı çalıştırarak bulabilirsiniz.
Arduino Şifreli Kilit Uygulaması
Bir tuş takımının en kullanışlı uygulamalarından biri, tuşlu giriş için kullanılmasıdır. Bir şifre ayarlayabilir ve Arduino'nun şifre doğruysa bir röleyi veya başka bir modülü etkinleştirmesini sağlayabilirsiniz. Aşağıdaki kod, şifre doğru girildiğinde 5V'luk bir röleyi etkinleştirir:
#include
#include
#include
#define Password_Length 8
int signalPin = 12;
char Data[Password_Length];
char Master[Password_Length] = "123A456";
byte data_count = 0, master_count = 0;
bool Pass_is_good;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x21, 16, 2);
void setup(){
lcd.init();
lcd.backlight();
pinMode(signalPin, OUTPUT);
}
void loop(){
lcd.setCursor(0,0);
lcd.print("Enter Password:");
customKey = customKeypad.getKey();
if (customKey){
Data[data_count] = customKey;
lcd.setCursor(data_count,1);
lcd.print(Data[data_count]);
data_count++;
}
if(data_count == Password_Length-1){
lcd.clear();
if(!strcmp(Data, Master)){
lcd.print("Correct");
digitalWrite(signalPin, HIGH);
delay(5000);
digitalWrite(signalPin, LOW);
}
else{
lcd.print("Incorrect");
delay(1000);
}
lcd.clear();
clearData();
}
}
void clearData(){
while(data_count !=0){
Data[data_count--] = 0;
}
return;
}
123A456 metnini kendi şifrenizle değiştirerek 10. satırdaki şifreyi değiştirebilirsiniz:
char Master [Password_Length] = "123A456”;
Parola uzunluğunun 5. satırda ayarlanması gerekir:
#define Password_Length 8
Yukarıdaki örnekteki şifre sadece 7 karakter uzunluğundadır, ancak dizenin sonuna boş bir karakter eklenmiş olduğundan şifre uzunluğu aslında 7'den büyüktür. Örneğin, şifreniz 5 karakter uzunluğundaysa, şifre uzunluğu için 6 girersiniz.
Röleyi etkinleştiren çıkış pimi 7. hatta tanımlanır:
int sinyalPin = 12;
Her şeyi Arduino'ya bağladıktan sonra, aşağıdaki gibi bir devreye sahip olacaksınız: