Projek Arduino Keypad Entry System 



Komponen yang diperlukan :

1. Arduino board

2. Breadboard

3. Kabel Jumper 

4. Tower Pro SG90 9g servomotor

5. Green LED

6. Red LED

7. 4×4 membrane keypad

8. 2 220-ohm resistors

Diperlukan librari Keypad, Servo, Password


Proyek ini menggunakan keypad membran 4x4 dengan pita delapan kabel berjalan dari bawah, terhubung ke servo yang menyapu untuk membuka kunci.


Cara Kerja :

Keypad pada dasarnya adalah serangkaian tombol yang mengeluarkan angka atau karakter tergantung pada tombol mana yang ditekan. Dengan papan tombol menghadap ke atas, kabel diberi nomor 1-8 dari kiri ke kanan. Empat kabel pertama sesuai dengan baris, dan empat terakhir sesuai dengan kolom. 


Kita akan menghubungkan keypad ini ke servo dan beberapa LED untuk membuat sistem kunci seperti kunci ketukan rahasia. Untuk menggunakan kunci, masukkan kode Anda dan tekan tanda bintang (*) untuk konfirmasi. Jika kode cocok dengan kata sandi yang ditentukan dalam sketsa, LED hijau akan berkedip dan servo akan bergerak 90 derajat. Jika kode salah, LED merah akan berkedip. Gunakan kunci hash (#) untuk mengatur ulang antar input kode. Anda dapat menukar servo ini dengan yang lebih substansial yang mampu membuka kunci gerendel yang lebih berat di pintu, atau mengunci dan membuka kunci kotak dari dalam dengan keypad dan LED yang dipasang secara eksternal.

Menguji Keypad :

Pertama kita akan menguji keypad dengan kode berikut:

#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] = {2,3,4,5};
byte colPins[COLS] = {6,7,8,9};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,
ROWS, COLS);
void setup() {
Serial.begin(9600);
}

oid loop() {

 char key = keypad.getKey();

 if (key != NO_KEY){

 Serial.println(key);

 }

}

 Unggah kode ini lalu buka Serial Monitor di IDE Anda.
Dengan keypad menghadap ke atas, sambungkan kabel secara berurutan dari kiri ke kanan ke pin digital Arduino 9-2. Setelah Anda mengunggah kode, tekan beberapa tombol. Saat setiap tombol ditekan, karakter yang sesuai akan muncul pada baris terpisah di konsol serial Arduino IDE.

Cara membuat rangkaian :
1. Hubungkan pin keypad langsung ke pin Arduino sebagai berikut. Pin keypad diberi nomor seperti yang ditunjukkan pada Gambar.


2. Tempatkan LED hijau dan LED merah ke breadbord dengan kaki negatif yang lebih pendek terhubung ke rel Arduino GND. Tambahkan resistor 220-ohm ke setiap kaki positif yang lebih panjang. Hubungkan resistor yang terpasang pada LED hijau ke pin Arduino 11, dan resistor yang terpasang pada LED merah ke pin Arduino 12.
3. Sekarang pasang servo. Hubungkan kabel coklat ke rel GND, kabel merah ke rel +5V, dan kabel kuning/putih langsung ke pin 13 di Arduino.

4. Pastikan pengaturan Anda cocok dengan Gambar, dan unggah kode di "Sketsa".
Sketch program arduino :
Pertama, sketsa memanggil pustaka Keypad, Servo, dan Password. Pustaka Servo disertakan dalam IDE, Kami kemudian mengatur delapan pin yang akan menentukan input dari keypad, dan mengatur pin Arduino 11 dan 12 untuk mengontrol LED dan pin 13 untuk mengontrol servomotor. Arduino menunggu input kode Anda dari keypad dan Anda mengkonfirmasi input Anda dengan *. Setelah Anda menekan tombol asterisk, sketsa akan memeriksa entri dengan kata sandi dalam kode. Jika entri tidak sesuai dengan sandi, LED merah akan disetel ke TINGGI dan menyala; jika entri cocok dengan kata sandi, LED hijau akan disetel ke TINGGI dan menyala, dan servomotor akan menyala. Menekan # akan mengatur ulang sketsa sehingga siap untuk entri lain.

Untuk mengubah kata sandi, ubah angka dalam tanda kutip di baris berikut.

Sandi sandi = Sandi("2468");

Kata sandi default dalam sketsa adalah 2468.

#include <Password.h>
#include <Keypad.h>
#include <Servo.h>
Servo myservo;
Password password = Password("2468"); // Set password
const byte ROWS = 4; // Set four rows
const byte COLS = 4; // Set four columns
char keys[ROWS][COLS] = { // Define the keymap
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9,8,7,6 }; // Pins connected to keypad
// ROW0, ROW1, ROW2 and ROW3
byte colPins[COLS] = { 5,4,3,2, }; // Pins connected to keypad
// COL0, COL1 and COL2

// Create the keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins,
ROWS, COLS);
void setup() {
Serial.begin(9600);
delay(200);
pinMode(11, OUTPUT); // Set green LED as output
pinMode(12, OUTPUT); // Set red LED as output
myservo.attach(13); // Pin connected to servo
keypad.addEventListener(keypadEvent); // Add an event listener to
// detect keypresses
}
void loop() {
keypad.getKey();
myservo.write(0);
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState()) {
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey) {
case '*': checkPassword(); break;
case '#': password.reset(); break;
default: password.append(eKey);
}
}
}

void checkPassword() {
if (password.evaluate() ){
Serial.println("Success"); // If the password is correct...
myservo.write(90); // Move servo arm 90 degrees
digitalWrite(11, HIGH); // Turn on green LED
delay(500); // Wait 5 seconds
digitalWrite(11, LOW); // Turn off green LED
} else {
Serial.println("Wrong"); // If the password is incorrect...
myservo.write(0);
digitalWrite(12, HIGH); // Turn on red LED
delay(500); // Wait 5 seconds
digitalWrite(12, LOW); // Turn off red LED
}
}