Bir tuş takımını giriş sistemi olarak kullanarak Arduino ile giriş sistemi yapalım.
Bir tuş takımı temelde hangi tuşa basıldığına bağlı olarak bir sayı ya da karakter veren bir tuş dizisidir. Tuş takımı yukarı bakacak şekilde, teller soldan sağa 1 ile 8 arasında numaralandırılmıştır. İlk dört tel sıralara karşılık gelir ve son dört sütunlara karşılık gelir.
Kapı kilit sistemi oluşturmak için bu tuş takımını bir servoya ve bazı LED'lere bağlayacağız. Kilidi kullanmak için kodunuzu girin ve onaylamak için yıldız işaretine (*) basın. Kod program içerisinde tanımlanan parola ile eşleşirse, yeşil LED yanıp sönecek ve servo 90 derece hareket edecektir. Kod yanlışsa, kırmızı LED yanıp söner. Kod girişleri arasında sıfırlama yapmak için kare tuşunu (#) kullanın.
Bu servoyu, kapıdaki daha ağır bir sürgü kilidini açabilen veya dışarıdan monte edilmiş tuş takımı ve LED'ler ile bir kutuyu içeriden kilitleyip açabilen daha uygun bir servo motor ile değiştirebilirsiniz.
Aşağıdaki kod bloğunu keypad aygıtını test etmek için kullanacağız. Keypad üzerinde bulunan her bir tuşun çalışıp çalışmadığını anlamış olacağız.
#include <Keypad.h> const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {2,3,4,5}; byte colPins[COLS] = {6,7,8,9}; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,ROWS, COLS); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key != NO_KEY){ Serial.println(key); } }
İlk önce program, Tuş Takımı, Servo ve Şifre kütüphanelerini çağırır. Servo kütüphanesi IDE'ye dahil edilmiştir, ancak Tuş Takımı ve Şifre kütüphanelerini indirmeniz gereklidir. Ardından tuş takımından veri girişini sağlayan sekiz pini ve LED'leri kontrol etmek için Arduino pinleri 11 ve 12'yi ve servo motoru kontrol etmek için pini 13 olarak ayarladık. Arduino, tuşlar ile kod girişi yapmanızı ve girişinizi * ile onaylamanızı bekler. Yıldız tuşuna bastığınızda, program koddaki şifreye göre girişi kontrol edecektir. Giriş şifreyle eşleşmezse, kırmızı LED HIGH olacak ve yanacak; giriş şifreyle eşleşirse yeşil LED HIGH olacak ve yanacak ve servo motor dönecektir. # Tuşuna basıldığında program sıfırlanır, böylece başka bir giriş için hazır olur.
Password tanımlama satırını kullanarak istediğiniz şifreyi belirleyebilirsiniz: Password password = Password("2468");
#include <Password.h> #include <Keypad.h> #include <Servo.h> Servo myservo; Password password = Password("2468"); const byte ROWS = 4; const byte COLS = 4; 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 }; byte colPins[COLS] = { 5,4,3,2, }; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,ROWS, COLS); void setup() { Serial.begin(9600); delay(200); pinMode(11, OUTPUT); pinMode(12, OUTPUT); myservo.attach(13); keypad.addEventListener(keypadEvent); } void loop() { keypad.getKey(); myservo.write(0); } void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: Serial.print("Basıldı: "); Serial.println(eKey); switch (eKey) { case '*': checkPassword(); break; case '#': password.reset(); break; default: password.append(eKey); } } } void checkPassword() { if (password.evaluate() ){ Serial.println("Şifre doğru."); myservo.write(90); digitalWrite(11, HIGH); delay(500); digitalWrite(11, LOW); } else { Serial.println("Şifre yanlış."); myservo.write(0); digitalWrite(12, HIGH); delay(500); digitalWrite(12, LOW); } }