Arduino UNO – Şifreli Kilit Uygulaması

Devre Bağlantıları

Kodlar

#include <Servo.h>
Servo kilit;

#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] = {13, 12, 11, 10};
byte colPins[COLS] = {9, 8, 7, 6};
Keypad tuslar = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#include <Adafruit_LiquidCrystal.h>
Adafruit_LiquidCrystal ekran(0);

bool durum = false; //Kilitli
String parola = "123";
String giris = "";

void setup()
{
  ekran.begin(16, 2);
  ekran.print("Sifreli Kilit");
  delay(1000);
  ekran.clear();
  delay(1000);
  
  kilit.attach(3); //Servo pini ayarlama
  kilit.write(0); //Sürgü Kilitlendi.
  
  ekran.setCursor(0, 0);
  ekran.print("Parola:");
}

void loop()
{
  char tus = tuslar.getKey();
  if(tus){
    
    if(tus == '*'){
      giris = "";
      ekran.setCursor(7, 0);
      ekran.print("         ");
      durum = 0;
    }else if(tus == '#'){
      if(giris == parola){
        durum = 1;
        giris = "";
        ekran.setCursor(7, 0);
        ekran.print("         ");
      }
    }else if(giris.length()<9){
      giris += tus; // giris = giris + tus;
    }else{
      giris = "";
      ekran.setCursor(7, 0);
      ekran.print("         ");
    }
    
    ekran.setCursor(7, 0);
    ekran.print(giris);
  }
  
  if(durum){
    kilit.write(90);
    ekran.setCursor(0, 1);
    ekran.print("Kilit Acik      ");
  }else{
    kilit.write(0);
    ekran.setCursor(0, 1);
    ekran.print("Kilitli         ");
  }
}

Gerçek Devre Kodları

#include <Keypad.h>
const byte Satir= 4;  // keypad satır sayısı
const byte Sutun= 4;  // keypad sütün sayısı
 
// Keypad tuş yapısını hazırlıyoruz.
char key[Satir][Sutun]= 
{
{'1', '2', '3', 'A'}, 
{'4', '5', '6', 'B'}, 
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
 
// Arduino bağlantı bacaklarını belirliyoruz
byte SatirPinleri[Satir] = {13,12,11,10}; 
byte SutunPinleri[Sutun]= {9,8,7,6}; 
 
// Keypade TusTakimi ismini verip arduino bağlantılarını ve karakterleri 
// bu TusTakimi keypad nesnesine tanımlıyoruz.
Keypad TusTakimi= Keypad(makeKeymap(key), SatirPinleri, SutunPinleri, Satir, Sutun);

#include <LiquidCrystal_I2C.h>

#include <Servo.h>

LiquidCrystal_I2C lcd_1(0x27, 16, 2);

Servo servo_3;

String sifre = "1234";
String girilensifre = "";
bool durum = true; // true-Kilitli, false-Açık

void setup()
{
  lcd_1.begin();
  servo_3.attach(3, 500, 2500);

  lcd_1.clear();
  lcd_1.setCursor(0, 0);
  lcd_1.print(" SiFRELi  KiLiT");
  lcd_1.setCursor(0, 1);
  servo_3.write(90);
  lcd_1.print("  KAPI KiLiTLi");
  delay(3000); // Wait for 3000 millisecond(s)
  lcd_1.clear();
}

void loop()
{
  char key = TusTakimi.getKey();
  if(key != NO_KEY){
    if(key == '0'){
      girilensifre += "0";
    }
    if(key == '1'){
      girilensifre += "1";
    }
    if(key == '2'){
      girilensifre += "2";
    }
    if(key == '3'){
      girilensifre += "3";
    }
    if(key == '4'){
      girilensifre += "4";
    }
    if(key == '5'){
      girilensifre += "5";
    }
    if(key == '6'){
      girilensifre += "6";
    }
    if(key == '7'){
      girilensifre += "7";
    }
    if(key == '8'){
      girilensifre += "8";
    }
    if(key == '9'){
      girilensifre += "9";
    }
    if(key == '*'){
      girilensifre = "";
      lcd_1.setCursor(0, 1);
      lcd_1.print("                ");
      if(!durum){
        durum = true;
      }
    }
    if(key == '#'){
      if(girilensifre == sifre){
        durum = false;
      }
      girilensifre = "";
      lcd_1.setCursor(0, 1);
      lcd_1.print("                ");
    }
    lcd_1.setCursor(0, 1);
    //lcd_1.print(girilensifre);
    int adet = girilensifre.length();
    for(int i = 0; i < adet; i++){
      lcd_1.print("*");
    }
  }
  if(durum){
    lcd_1.setCursor(0, 0);
    lcd_1.print("PAROLA GiR # BAS");
    servo_3.write(90);
  }else{
    lcd_1.setCursor(0, 0);
    lcd_1.print("KiLiTLEMEK iCiN ");
    lcd_1.setCursor(0, 1);
    lcd_1.print("* TUSUNA BAS    ");
    servo_3.write(0);
  }
  delay(10); // Simülasyon performansını iyileştirmek için
}

Yorum bırakın