KEYPAD PASWOARD 6 DIGIT
dengan saya Kharifans art kali ini saya akan berbagi pengalaman
tentang keinginan untuk membuat alat yang sederhana tapi sangat
bermanfaat dan pastinya Keren hehe. pada kesempatan ini saya membuat
sebuah alat yang saya beri nama Keypad Password,
pada kesempatan ini saya membuat coding sederhana yang hanya
menggunakan 6 tombol, mungkin kita sering melihat pada sebuah Film yang
berbau teknologi ada kalanya walaupun hanya membuka pintu atau
mengaktifkan sebuah alat kita perlu memasukkan password.
Alat ini memnggunakan kombinasi 6 Digit Angka yang difungsikan sebagai
Code rahasia atau Password. Angka tersebut bisa kita rubah sesuai
keinginan kita dengan menggunakan 6 kombinasi angka yang kita inginkan.
Dengan menggunakan 6 kombinasi tentu sudah menyulitkan pengguna lain
untuk menebak password kita, dan untuk Alat yang saya buat ini saya
aplikasikan pada sebuah sepeda motor yang saya gunakan sebagai pengganti
atau cadangan kunci kontak utama, jadi kita tidak perlu menggunakan
kunci kontak untuk menghidupkan sebuah sepeda motor melainkan
menggunakan sebuah Password yang kita masukkan ke alat yang telah kita
pasang di motor kita. KEREN BUKAN..!!!
Mungkin alat ini akan menginspirasi teman-teman untuk membuatnya. Untuk skema rangkaian silahkan lihat pada gambat dibawah ini.
Coding
#include "LiquidCrystal.h"
#include "EEPROM.h"
#include "Servo.h"
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
Servo myServo;
int relay = A1;
int buzzer = A2;
int ledRed = A3;
int ledGreen = A4;
int ledBlue = A5;
int tombol1 = 2;
int tombol2 = 3;
int tombol3 = 4;
int tombol4 = 5;
int Enter = 6;
int Reset = 7;
int alamat = 0;
static unsigned long SaveTimer;
static unsigned long SaveDelay = (30 * 1000);
char CODE[10] = "141213E"; //Digit Password
char Str[10];
char Panjang_Password = 6;
int Pos = 0;
bool Unlocked;
static unsigned long DisplayTimer;
static unsigned long DisplayDelay = 200;
void setup() {
myServo.attach(A0);
int EEPROMCodeOK = true;
for (Pos = 0; Pos <= (Panjang_Password); Pos++) {
Str[Pos] = EEPROM.read(Pos);
if (!(strrchr("1123456789", Str[Pos]))) {
// not a valid code
EEPROMCodeOK = false;
}
}
Pos++;
Str[Pos] = EEPROM.read(Pos);
if (Str[Panjang_Password + 1] != 'E') EEPROMCodeOK = false;
if (EEPROMCodeOK) {
Str[Panjang_Password + 2] = '\0';
strncpy(CODE, Str, Panjang_Password + 1);
}
ClearCode();
pinMode(buzzer, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(ledBlue, OUTPUT);
pinMode(tombol1, INPUT_PULLUP);
pinMode(tombol2, INPUT_PULLUP);
pinMode(tombol3, INPUT_PULLUP);
pinMode(tombol4, INPUT_PULLUP);
pinMode(Enter, INPUT_PULLUP);
pinMode(Reset, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("== Dicky B_Mz ==");
lcd.setCursor(0, 1);
lcd.print(" Password Array ");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Entri Password:");
DisplayTimer = millis() + 200;
}
void loop() {
Lock();
Pos = constrain(Pos, 0, Panjang_Password);
int buttonState1 = digitalRead(tombol1);
int buttonState2 = digitalRead(tombol2);
int buttonState3 = digitalRead(tombol3);
int buttonState4 = digitalRead(tombol4);
int clButtonState = digitalRead(Reset);
int enterButtonState = digitalRead(Enter);
lcd.setCursor(9, 1);
if (buttonState1 == LOW) {
Str[Pos] = '1';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol1) == LOW);
}
else if (buttonState2 == LOW) {
Str[Pos] = '2';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol2) == LOW);
}
else if (buttonState3 == LOW) {
Str[Pos] = '3';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol3) == LOW);
}
else if (buttonState4 == LOW) {
Str[Pos] = '4';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol4) == LOW);
}
else if (enterButtonState == LOW) {
Str[Pos] = 'E';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol1) == LOW);
if (strcmp (Str,CODE) == 0) {
Unlocked = true;
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print(" Access Granted");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433==");
lcd.setCursor(0, 1);
lcd.print(" Unlocked");
}
else if (SaveTimer > millis() && (Pos + 1) == Panjang_Password) {
strcpy(CODE, Str);
for (Pos = 0; Pos <= (Panjang_Password + 1); Pos++) {
EEPROM.write(Pos, Str[Pos]);
}
lcd.setCursor(0, 1);
lcd.print("Saving Code:");
lcd.setCursor(0, 1);
lcd.print(Str);
Unlocked = true;
}
else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Dicky B_Mz ==");
lcd.setCursor(0, 1);
lcd.print(" Access Denied.");
digitalWrite(buzzer, HIGH);
digitalWrite(ledRed, HIGH);
delay(2000);
digitalWrite(buzzer, LOW);
digitalWrite(ledRed, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433==");
lcd.setCursor(0, 1);
lcd.print("Password:");
}
while (Unlocked) {
Unlock();
if (digitalRead(Reset) == LOW) {
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("==Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
lcd.setCursor(0, 1);
lcd.print(" Locked");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
Unlocked = false;
SaveTimer = millis() + 30000;
}
}
ClearCode();
}
else if (clButtonState == LOW) {
delay(500);
while (Reset == LOW);
if ((millis() - SaveTimer) > 4500) {
}
ClearCode();
}
if ( (long)( millis() - DisplayTimer ) >= 0) {
DisplayTimer += DisplayDelay;
lcd.setCursor(9, 1);
lcd.print(Str);
lcd.print(" ");
}
}
void ClearCode() {
Pos = 0;
Str[Pos] = '\0';
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
}
void Unlock() {
myServo.write(0);
digitalWrite(ledGreen, HIGH);
digitalWrite(relay, HIGH);
digitalWrite(ledBlue, LOW);
}
void Lock() {
myServo.write(180);
digitalWrite(ledGreen, LOW);
digitalWrite(relay, LOW);
digitalWrite(ledBlue, HIGH);
}
#include "EEPROM.h"
#include "Servo.h"
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
Servo myServo;
int relay = A1;
int buzzer = A2;
int ledRed = A3;
int ledGreen = A4;
int ledBlue = A5;
int tombol1 = 2;
int tombol2 = 3;
int tombol3 = 4;
int tombol4 = 5;
int Enter = 6;
int Reset = 7;
int alamat = 0;
static unsigned long SaveTimer;
static unsigned long SaveDelay = (30 * 1000);
char CODE[10] = "141213E"; //Digit Password
char Str[10];
char Panjang_Password = 6;
int Pos = 0;
bool Unlocked;
static unsigned long DisplayTimer;
static unsigned long DisplayDelay = 200;
void setup() {
myServo.attach(A0);
int EEPROMCodeOK = true;
for (Pos = 0; Pos <= (Panjang_Password); Pos++) {
Str[Pos] = EEPROM.read(Pos);
if (!(strrchr("1123456789", Str[Pos]))) {
// not a valid code
EEPROMCodeOK = false;
}
}
Pos++;
Str[Pos] = EEPROM.read(Pos);
if (Str[Panjang_Password + 1] != 'E') EEPROMCodeOK = false;
if (EEPROMCodeOK) {
Str[Panjang_Password + 2] = '\0';
strncpy(CODE, Str, Panjang_Password + 1);
}
ClearCode();
pinMode(buzzer, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(ledBlue, OUTPUT);
pinMode(tombol1, INPUT_PULLUP);
pinMode(tombol2, INPUT_PULLUP);
pinMode(tombol3, INPUT_PULLUP);
pinMode(tombol4, INPUT_PULLUP);
pinMode(Enter, INPUT_PULLUP);
pinMode(Reset, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("== Dicky B_Mz ==");
lcd.setCursor(0, 1);
lcd.print(" Password Array ");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Entri Password:");
DisplayTimer = millis() + 200;
}
void loop() {
Lock();
Pos = constrain(Pos, 0, Panjang_Password);
int buttonState1 = digitalRead(tombol1);
int buttonState2 = digitalRead(tombol2);
int buttonState3 = digitalRead(tombol3);
int buttonState4 = digitalRead(tombol4);
int clButtonState = digitalRead(Reset);
int enterButtonState = digitalRead(Enter);
lcd.setCursor(9, 1);
if (buttonState1 == LOW) {
Str[Pos] = '1';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol1) == LOW);
}
else if (buttonState2 == LOW) {
Str[Pos] = '2';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol2) == LOW);
}
else if (buttonState3 == LOW) {
Str[Pos] = '3';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol3) == LOW);
}
else if (buttonState4 == LOW) {
Str[Pos] = '4';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol4) == LOW);
}
else if (enterButtonState == LOW) {
Str[Pos] = 'E';
Pos++;
Str[Pos] = '\0';
delay(250);
while (digitalRead(tombol1) == LOW);
if (strcmp (Str,CODE) == 0) {
Unlocked = true;
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print(" Access Granted");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433==");
lcd.setCursor(0, 1);
lcd.print(" Unlocked");
}
else if (SaveTimer > millis() && (Pos + 1) == Panjang_Password) {
strcpy(CODE, Str);
for (Pos = 0; Pos <= (Panjang_Password + 1); Pos++) {
EEPROM.write(Pos, Str[Pos]);
}
lcd.setCursor(0, 1);
lcd.print("Saving Code:");
lcd.setCursor(0, 1);
lcd.print(Str);
Unlocked = true;
}
else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Dicky B_Mz ==");
lcd.setCursor(0, 1);
lcd.print(" Access Denied.");
digitalWrite(buzzer, HIGH);
digitalWrite(ledRed, HIGH);
delay(2000);
digitalWrite(buzzer, LOW);
digitalWrite(ledRed, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433==");
lcd.setCursor(0, 1);
lcd.print("Password:");
}
while (Unlocked) {
Unlock();
if (digitalRead(Reset) == LOW) {
delay(200);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("==Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
lcd.setCursor(0, 1);
lcd.print(" Locked");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
Unlocked = false;
SaveTimer = millis() + 30000;
}
}
ClearCode();
}
else if (clButtonState == LOW) {
delay(500);
while (Reset == LOW);
if ((millis() - SaveTimer) > 4500) {
}
ClearCode();
}
if ( (long)( millis() - DisplayTimer ) >= 0) {
DisplayTimer += DisplayDelay;
lcd.setCursor(9, 1);
lcd.print(Str);
lcd.print(" ");
}
}
void ClearCode() {
Pos = 0;
Str[Pos] = '\0';
lcd.setCursor(0, 0);
lcd.print("== Kharifans_art 1433 ==");
lcd.setCursor(0, 1);
lcd.print("Password:");
}
void Unlock() {
myServo.write(0);
digitalWrite(ledGreen, HIGH);
digitalWrite(relay, HIGH);
digitalWrite(ledBlue, LOW);
}
void Lock() {
myServo.write(180);
digitalWrite(ledGreen, LOW);
digitalWrite(relay, LOW);
digitalWrite(ledBlue, HIGH);
}
Untuk Scematich dan layout PCB nya silahkan Hubungi saya Via FB
Demikian Postingan Kali Ini Semoga bermanfaat....
Kak laptop yang cocok buat pemrograman itu laptop yang kayak gimana,dan apakah harus merek terkanal atau merek yang biasa saja.
ReplyDelete