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.