Şifreli Kilit Uygulaması

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);
}

Benzer Temrinler & Yazılar

  • Bluetooth Uygulaması

    Bluetooth modülle haberleşmek için telefondan bluetooth bağlantısı açılarak hc-05 cihazı bulunur ve “Bluetooth aygıtını seç” düğmesiyle hc-05 seçilir. Varsayılan şifre “1234” veya “0000” dır.Bluetooth ile “A” harfi gönderilerek LED yakılır, “B” harfi gönderilerek LED söndürülür (Görseldeki). Bluetooth uygulama devresi Görselde görülmektedir. void setup() { pinMode(13, OUTPUT); Serial.begin(9600); // Bluetooth ile seri iletişimi başlat. } void…

  • Trafik Lambası Uygulaması

    Görselde röle modülünün beslemesi Arduino kartının 5 V ve GND uçlarından verilir. ModülünGörselde 13, 12, 11 numaralı pinlere sırasıyla kırmızı, sarı ve yeşil LED bağlanarak programda çıkış olarak ayarlanmıştır. Her durum için yanan lambalara lojik 1 bilgisi gönderilirken sönmesi istenen lambalara lojik 0 bilgisi gönderilir.Değişkenler (kirmizi, sari, yesil) byte (0-255 arası sayılar için) tipinde tanımlanarak…

  • Yaklaşım Dedektörü Devresi

    Görseldeki yaklaşım sensörü modülü ve pin yapısı görülmektedir. Sensör modülü bir çift IR alıcı verici LED’e sahiptir.  Verici LED kızılötesi frekansta ışık verir. 2 cm-35 cm aralığında bulunan engelin yüzeyine çarpıp yansıyan ışık alıcı sensör tarafından okunur. Dijital çıkış veren modül üzerindeki yeşil ışık yanar ve dijital çıkıştan da LOW (lojik 0) okunur. Algılama uzaklığı…

  • Işık Sensörü Uygulaması

    Görseldeki devrede Arduino’nun 5 V gerilimi üzerine uygulanan LDR’nin direnç-gerilim değişiminin anlaşılabilmesi için 10 kΩ’luk bir direnç seri bağlanarak gerilim bölücü oluşturulur. Bağlantı noktasının gerilim değişimi Arduino’nun analog girişine verilir. Aydınlık ortamda LDR’nindirenci 10 kΩ’un altındadır. Karanlıkta (LDR elle kapatıldığında) LDR direnci MΩ değerine doğruartar. LDR üzerine düşen gerilim artacağı için LDR ucuna bağlı A0…

  • Wi-Fi Kontrollü Araba Uygulaması NodeMCU 1.0 (ESP-12E) ve ESP32 kodu

    Görseldeki Wi-Fi kontrollü araba uygulamasında NodeMCU acces point (AP) modunda çalışmaktadır. NodeMCU’ya bağlanmak için kablosuz ağlardan “Robot” seçilir. Şifre “12345678” girilir. Bilgisayar veya akıllı telefondan tarayıcı (Chrome vb.) açılarak adres satırına 192.168.4.1 girilerek NodeMCU içindeki web server sayfasından araç kontrol edilir. /* NodeMCU Access Point (AP) modunda çalışmaktadır. Kablosuz ağlardan "Robot"a bağlanın. Şifre: 12345678 Tarayıcıdan…

Bir Yorum Yazın

E-posta adresiniz yayınlanmayacaktır. Gerekli alanlar * ile işaretlenmiştir.