Görseldeki uygulamada tuş takımından doğru şifre girildiğinde step motor 90 °C’lik dönüş yapar. Geçerli ve geçersiz şifreler için farklı ses sinyalleri verir.

#include <Keypad.h> //Tuş takımı kütüphanesi.

byte hane = 0;
char sifre[] = "123ABC"; // Kullanılacak şifre.
char giris[sizeof(sifre)]; //Şifre uzunluğu kadar dizi oluştur.
const byte buzzer = 1; // Buzzer pini.

//---Tuş takımı ayarları.---
const byte satir = 4; //Dört satır.
const byte sutun = 4; //Dört sütün.
char tusDizilimi[satir][sutun] = {//Tuş takımındaki sebollerin dizilimini tanımlama.
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte satirPinleri[satir] = {9, 8, 7, 6};
//{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı.
byte sutunPinleri[sutun] = {5, 4, 3, 2};
//{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı.

//tusTakimi adında nesne oluşturma.
Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun);

void setup() {
  pinMode(buzzer, OUTPUT); // Buzzer.
  pinMode(10, OUTPUT); // Step motor pinleri.
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);

  Serial.begin(9600);
  Serial.println("Lütfen şifrenizi giriniz: ");
}

void loop() {
  char tus = tusTakimi.waitForKey(); //Tuşa basılana kadar bekle.
  Serial.print(tus); //Basılan tuşu ekrana yazdır.
  giris[hane] = tus; //Sırayla her tuşu giris dizisine yükle.
  hane++;

  if (hane == sizeof(sifre) - 1) { //Şifre uzunluğu kadar tuşa basıldığında...
    if (!strcmp(giris, sifre)) { //İki diziyi karşılaştır. Şifre doğruysa yapılacaklar...
      Serial.println("\nŞifre doğru. Kapı açıldı");
      digitalWrite(buzzer, 1); // Buzzer bir saniye çalar.
      delay(1000);
      digitalWrite(buzzer, 0);
      stepMotor(); // Step motor çalıştıran fonksiyonu çağır.
      Serial.println("Lütfen şifrenizi giriniz: ");
    }
    else { //Şifre yanlışsa yapılacaklar...
      Serial.println("\nŞifre yanlış. Lütfen tekrar deneyiniz.");
      digitalWrite(buzzer, 1); // Geçersiz kart için buzzer sesi.
      delay(200);
      digitalWrite(buzzer, 0);
      delay(200);
      digitalWrite(buzzer, 1);
      delay(200);
      digitalWrite(buzzer, 0);
    }
    hane = 0;
  }
}

void stepMotor() { // Step motor Yaklaşık 90° döner.
  int x, adimSayisi = 500, sure = 2;

  for (x = 0; x < adimSayisi / 4; x++) {
    for (byte i = 10; i <= 13; i++) { //Sağa dön.
      digitalWrite(i, 1);
      delay(sure);
      digitalWrite(i, 0);
    }
  }
  delay(1000); // Kapı açık kalma süresi.
  for (x = 0; x < adimSayisi / 4; x++) {
    for (byte i = 13; i >= 10; i--) { //Sola dön.
      digitalWrite(i, 1);
      delay(sure);
      digitalWrite(i, 0);
    }
  }
}

#include <Keypad.h> // Tuş takımı kütüphanesi. V3.1.1
#include <Servo.h> // Dahili Servo kütüphanesi v1.1.8

Servo servo; // servo isimli nesne oluşturuldu.

const byte buzzer = 1, yesilLED = 10, kirmiziLED = 11;
byte hane = 0;
char sifre[] = "123ABC"; // Kullanılacak şifre.
char giris[sizeof(sifre)]; //Şifre uzunluğu kadar dizi oluştur.

//---Tuş takımı ayarları.---
const byte satir = 4; //Dört satır.
const byte sutun = 4; //Dört sütün.
char tusDizilimi[satir][sutun] = {//Tuş takımındaki sebollerin dizilimini tanımlama.
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte satirPinleri[satir] = {9, 8, 7, 6};
//{R1, R2, R3, R4} Satır pinlerinin Arduino pinlerine bağlantısı.
byte sutunPinleri[sutun] = {5, 4, 3, 2};
//{C1, C2, C3, C4} Sütün pinlerinin Arduino pinlerine bağlantısı.

//tusTakimi adında nesne oluşturma.
Keypad tusTakimi = Keypad( makeKeymap(tusDizilimi), satirPinleri, sutunPinleri, satir, sutun);

void setup() {
  pinMode(buzzer, OUTPUT);
  pinMode(yesilLED, OUTPUT);
  pinMode(kirmiziLED, OUTPUT);
  servo.attach(12); // Servo motor 12d numaralı PWM çıkışına bağlı.
  Serial.begin(9600);
  Serial.println("Lütfen şifrenizi giriniz: ");
}

void loop() {
  char tus = tusTakimi.waitForKey(); //Tuşa basılana kadar bekle.
  Serial.print(tus); //Basılan tuşu ekrana yazdır.
  giris[hane] = tus; //Sırayla her tuşu giris dizisine yükle.
  hane++;

  if (hane == sizeof(sifre) - 1) { //Şifre uzunluğu kadar tuşa basıldığında...
    if (!strcmp(giris, sifre)) { //İki diziyi karşılaştır. Şifre doğruysa yapılacaklar...
      Serial.println("\nŞifre doğru. Kapı açıldı");
      digitalWrite(yesilLED, 1); // Yeşil LED'i yak.
      digitalWrite(buzzer, 1); // Buzzer bir saniye çalar.
      delay(1000);
      digitalWrite(buzzer, 0);
      digitalWrite(yesilLED, 0); // Yeşil LED'i söndür.
      kapiAc(); // kapiAc fonksiyonunu çağır.
      Serial.println("Lütfen şifrenizi giriniz: ");
    }
    else { //Şifre yanlışsa yapılacaklar...
      Serial.println("\nŞifre yanlış. Lütfen tekrar deneyiniz.");
      digitalWrite(kirmiziLED, 1); // Kırmızı LED'i yak.
      digitalWrite(buzzer, 1); // Geçersiz şifre için buzzer sesi.
      delay(200);
      digitalWrite(buzzer, 0);
      delay(200);
      digitalWrite(buzzer, 1);
      delay(200);
      digitalWrite(buzzer, 0);
      digitalWrite(kirmiziLED, 0); // Kırmızı LED'i söndür.
    }
    hane = 0;
  }
}

void kapiAc() {
  servo.write(90); //Servo motoru 180 dereceye getirir.
  delay(3000);
  servo.write(0); //Servo motoru 0 dereceye getirir.
  delay(1000);
}

Categories:

Tags:

No responses yet

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Dersler