Ş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

  • Optokuplörle dijital giriş uygulaması

    Görseldeki devrede optokuplör A0’a (14 numaralı pin) bağlanmıştır. Bu uygulamada A0pini dijital giriş olarak kullanılmıştır. Optokuplör iletime geçtiğinde normalde pull-up’tan dolayı 1olan A0 C-E üzerinden GND’ye bağlanır (0 olur.). Programda üç adet boolean (bool) değişken yanyana tanımlanmış ve ikisine değer atanmıştır. Programda HIGH veya 1 kullanılan yerlerde içinde1 bilgisi olan yak değişkeni kullanılmıştır.Optokuplörün 1 ve…

  • Google firebase kullanımı

    Google firebase kullanımı NodeMCU intenette herhangi bir server üzerinde database kullanılarak kontrol edilebilir. Google firebase ücretsiz bir database uygulamasıdır ve ESP kartları için yazılmış kütüphanelere Arduino IDE üzerinden ulaşılabilir. Database oluşturmak için “firebase.google.com” adresine Google hesabıyla giriş yapılarak “Got to console” tıklanır (Görsel 6.17). Görsel 6.17: Firebase konsoluna giriş “Add Project” tıklanır (Görsel 6.18). Görsel…

  • RFID Uygulaması

    Görseldeki uygulamada RFID okuyucuya geçerli bir kart okutulduğunda seri ekranda “ge-çerli kart” yazar. Geçersiz kart okutulduğunda kartın ID’sini verir. ID’si programa dâhil edilenkartlar, geçerli kart olur. Kart geçerliyken çalışan kod blokuna istenen kodlar yazılarak istenenkontroller sağlanır. #include <SPI.h> // Dahili SPI kütüphanesi #include <MFRC522.h> // v1.4.9 #define reset 9 // Reset pini #define ss 10…

  • ESP32-S3 Pin Yapısı

    ESP32-S3 DevKitC-1 (ESP32-S3-WROOM-1) geliştirme kartının 44 pinli detaylı bacak ve pin bağlantı diyagramı aşağıda yer almaktadır. Vektörel SVG formatında hazırlanmış şemayı doğrudan inceleyebilir veya yüksek çözünürlüklü olarak indirebilirsiniz. 🔍 Vektörel (SVG) Tam Ekran İncele 💾 PNG Formatında İndir ESP32-S3 Önemli Özellikler & Pin Grupları İşlemci: Xtensa® 32-bit LX7 Çift Çekirdek (240 MHz’e kadar), Vektör/Yapay Zeka…

  • Servo Motor Uygulaması

    Servo, kapalı çevrim (geri besleme) kontrol sistemi anlamına gelir. Kapalı çevrim kontrol sistemi,istenen sonucu elde etmek yani motorun hızını ve yönünü ayarlamak için geri besleme sinyalinikullanır. Görselde servo motor geri besleme blok şeması ve kontrol ünitesi görülmektedir.DC motor, dişliler aracılığıyla çıkış miline bağlıdır ki bu mil potansiyometrenin milidir. Potansiyometre,motorun mevcut konumunun hedef konumla karşılaştırıldığı servo…

  • Seri Port Ekran Uygulaması

    Görseldeki çıktılarda seri port ekranına Serial.println() fonksiyonuyla “MerhabaDünya” yazdırılmaktadır.İkinci programda butonla dijital giriş uygulamasında butonun durumu seri port ekranına yazdırılmaktadır void setup() { Serial.begin(9600); //Seri iletişim baudrate ayarı yapıldı. } void loop() { Serial.println("Merhaba Dünya!"); } const byte buton = 2; void setup() { Serial.begin(9600); //Seri iletişim baudrate ayarı yapıldı. pinMode(buton, INPUT_PULLUP); } void loop()…

Bir Yorum Yazın

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