Herkese Merhaba,
3 yıl aradan sonra tozlu raflardan ekipmanlarımı çıkardım ve kurcalarken sizler için bir uygulama yaptım. Daha önceden aldığım ama hiç kullanmadığım bir Keypad ile bina girişlerinde bulunan kapı kontrolünü arduino ile yaptım. Kapı olarak servo, açık ve kapalı olduğunu anlamak için kırmızo ve led kullanıldı. Burada kodlar arasında gerekli açıklamaları yaptım ve devrenin çalışma prensibinin videosunu alttaki linkten ulaşabilirsiniz.
A tuşuna Kapı Aç, B tuşuna Kapıyı Kapat, # (Kare) tuşu ile şifre giriş başlangıcını belirttim. Burada parola olarak 1234 belirledim. # tuşuna basıldıktan sonra 1234 şifresi girildiği anda kapı açılır ve yeşil led 2 saniye boyunca yanar. Şifrenin yanlış olması durumunda kapı kitlenir ve 2 saniye boyunca kırmızı led yanar.
Burada 4×4 bir keypad kullandım, elinizde 3×4 de olabilir. o zaman numRows = 4 , numCols = 3 değişkenlerini ve keymap adındaki 2 boyutlu dizideki tuş dilimini düzenlemeniz gerekmektedir.
Keypad i şekildeki tuttuğunuzda soldan itibaren bacak bağlantılarını 2,3,4,5,6,7,8,9 nolu arduinonun girişlerine bağlamanız gerekmektedir.
10 numaralı arduino çıkışını servo motor kontrolü için, 11 ve 12 nolu çıkışları led kontrolü için kullanılmıştır.
Buradaki önemli noktalardan biri keypad kütüphanesinin Ardunio IDE sinin içerisinde olmamasıdır. Bunu dışardan kendimiz eklememiz gerekiyor. Buradan indirdiğimiz Keypad kütüphanesini çıkartın ve libraries klasörü içerisine atınız. Bu IDE nin kurulduğu yerde yer almaktadır. Bende c:\program files\arduino\libraries yolunun altında yer almaktaydı orayı kopyalayıp kullanmaya devam ettim.
Aşağıdaki devre şemasını ve kodları izleyerek rahatlıkla yapabilirsiniz.
İyi geliştirmeler 🙂
Devre Şeması:
Arduino Kodları:
#include <Keypad.h> // keypad kütüphanesi, kendimiz import ediyoruz.
#include <Servo.h> // servo kütüphanesi
int ledPinOpen=11; // yeşil led
int ledPinClose=12; // kırmızı led
const byte numRows= 4; // keypad satır sayısı
const byte numCols= 4; // keypad sütün sayısı
int control = 0;
int counter = 0;
String enter_password; // girilen şifreyi tutar
String password = "#1234"; // kendimizin belirlediği şifre
Servo myservomotor;
// keypad tuş yapısını oluşturuyoruz
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// bağlantı bacaklarını belirliyoruz
byte rowPins[numRows] = {2,3,4,5};
byte colPins[numCols]= {6,7,8,9};
// keypad i set ediyoruz
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
void setup()
{
Serial.begin(9600);
myservomotor.attach(10); // 10.bacak servo çıkışı
myservomotor.write(0); // ilk etapta açısını 0 olarak set ediyoruz
pinMode(ledPinOpen,OUTPUT); // led pinlerini çıkış olarak belitliyoruz
pinMode(ledPinClose,OUTPUT);
}
void loop()
{
char keypressed = myKeypad.getKey(); // keypadden gelen değer
if (keypressed != NO_KEY) {
Serial.print(keypressed);
// # tuşuna basıldı ise control 1 olur password kontrole geçer
if(keypressed == '#') {
control = 1;
}
// Kapıyı Aç
if(keypressed == 'A') {
for(int value = 0; value < 90; value++) {
myservomotor.write(value);
digitalWrite(ledPinOpen,1);
digitalWrite(ledPinClose,0);
}
}
// Kapıyı Kapat
if(keypressed == 'B') {
for(int value = 90; value > 1; value–){
myservomotor.write(value);
digitalWrite(ledPinOpen,0);
digitalWrite(ledPinClose,1);
}
}
// # tuşuna basıldı ise gerekli kontrolleri yap
if(control == 1){
enter_password = enter_password + keypressed;
counter++;
Serial.print("sifre " + enter_password );
// password doğru ise
if(enter_password == password) {
Serial.print("kapı açıldı");
for(int value = 0; value < 90; value++) {
myservomotor.write(value);
}
digitalWrite(ledPinOpen,1);
digitalWrite(ledPinClose,0);
delay(2000); // gecikme
digitalWrite(ledPinOpen,0);
enter_password = "";
control = 0;
counter = 0;
}
// password yanlış veya 4 den fazla girildi ise
else if ((enter_password != password) && (counter > 4) ) {
Serial.print("hatalı giriş");
for(int value = 90; value > 1; value–){
myservomotor.write(value);
}
digitalWrite(ledPinOpen,0);
digitalWrite(ledPinClose,1);
delay(2000);
digitalWrite(ledPinClose,0);
enter_password = "";
control = 0;
counter = 0;
}
}
}
}
Devre tasarım videosu: