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); }
No responses yet