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
}