Ingin membuat sistem keamanan sederhana dengan verifikasi password? Dengan keypad 4x4, kamu bisa dengan mudah membuat sistem input PIN/password 4 digit. Proyek ini cocok untuk kunci pintu digital, kontrol akses, atau sistem alarm.
Dalam tutorial ini, kita akan:
- Menghubungkan keypad 4x4 ke Arduino
- Membaca dan menyimpan input dari keypad
- Memverifikasi password dan memberikan respons (LED)
Alat dan Bahan
- 1x Arduino Uno
- 1x Keypad 4x4
- 2x LED (indikator sukses/gagal)
- 2x Resistor 220 ohm
- Kabel jumper
- Breadboard
Instalasi Library Keypad
- Buka Arduino IDE
- Masuk ke Tools > Manage Libraries...
- Cari dan install Keypad by Mark Stanley, Alexander Brevig
Skema Rangkaian
Hubungkan pin 8 keypad ke pin digital Arduino (contoh pin 2–9)- R1 → pin 9
- R2 → pin 8
- R3 → pin 7
- R4 → pin 6
- C1 → pin 5
- C2 → pin 4
- C3 → pin 3
- C4 → pin 2
LED Hijau:
- Anoda (+) → pin 13 Arduino
- Katoda (–) → Resistor → GND
LED Merah:
- Anoda (+) → pin 12 Arduino
- Katoda (–) → Resistor → GND
Kode Program Verifikasi Password 4 Digit
#include "Keypad.h"
const byte ROWS = 4; // jumlah baris keypad
const byte COLS = 4; // jumlah kolom keypad
// Definisi tombol pada keypad
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
// Pin arduino untuk baris dan kolom
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
// Membuat objek keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Password default
const char password[5] = "1234"; // Harus 4 karakter + null terminator
char enteredPassword[5]; // Untuk menyimpan input user
byte passwordIndex = 0;
// Pin LED indikator
const int ledPinOk = 13; // LED Hijau
const int ledPinGagal = 12; // LED Merah
void setup() {
Serial.begin(9600);
Serial.println("Masukkan Password (4 karakter):");
pinMode(ledPinOk, OUTPUT);
pinMode(ledPinGagal, OUTPUT);
digitalWrite(ledPinOk, LOW); // Matikan LED saat awal
digitalWrite(ledPinGagal, LOW); // Matikan LED saat awal
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == '*') {
// Reset input jika user tekan *
passwordIndex = 0;
Serial.println("\nInput dibatalkan. Masukkan ulang password:");
} else if (passwordIndex < 4) {
enteredPassword[passwordIndex++] = key;
Serial.print("*"); // Tampilkan bintang sebagai pengganti karakter
}
if (passwordIndex == 4) {
enteredPassword[4] = '\0'; // Akhiri string
if (strcmp(enteredPassword, password) == 0) {
Serial.println("\nPassword Benar! Akses Diberikan.");
digitalWrite(ledPinOk, HIGH); // Nyalakan LED
delay(2000); // Biarkan nyala 1 detik
digitalWrite(ledPinOk, LOW); // Matikan kembali
} else {
Serial.println("\nPassword Salah! Coba Lagi.");
Serial.println("Masukkan Password (4 karakter):");
digitalWrite(ledPinGagal, HIGH); // Nyalakan LED
delay(2000); // Biarkan nyala 1 detik
digitalWrite(ledPinGagal, LOW); // Matikan kembali
}
passwordIndex = 0; // Reset untuk input berikutnya
}
}
}
EmoticonEmoticon
Note: Only a member of this blog may post a comment.