SURYA_ningsih

SURYA -ningsih

KEYPAD PASWOARD 6 DIGIT



Selamat Sore sahabat Semuanya  
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);


Untuk Scematich dan layout PCB nya silahkan Hubungi saya Via FB
Demikian Postingan Kali Ini Semoga bermanfaat....

1 comment:

  1. Kak laptop yang cocok buat pemrograman itu laptop yang kayak gimana,dan apakah harus merek terkanal atau merek yang biasa saja.

    ReplyDelete

Powered by Blogger.