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);
}
}
#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
}
}
1 Comments
Bermanfaat sekali mas aspul, terima kasih, semangat terus berkarya
ReplyDelete