Jumat, 24 Juni 2016

Keypad Password CodevisionAVR


Salam elektro,sebelumnya aruselektronika sudah memberikan tuturial cara mengakses keypad dasar menggunakan arduino,nah karena ada beberapa request dari pembaca untuk memberikan tutorial membuat keycode akhirnya pada kesempatan ini aruselektronika baru bisa posting artikel keycode basic,apasih keycode ? untuk apa sih keycode ? initinya sih keycode berfungsi untuk mengurangi tingkat kejahatan,karena dengan menggunakan alat ini jika kalian ingin masuk ke suatu ruangan kalian harus memasukan dulu password,jika tidak bisa ya kalian akan  bisa dianggap penjahat :) 

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Minimum system atmega 16
  • Lcd 16x2 (2)
  • Variable resistor 10k (2)
  • Keypad 4x4 
  • Pusbutton
  • Led 5mm (2)
  • Resistor 220 (2)
  • Kabel jumper disesuaikan
  • Breadboard
  • Laptop
  • Software codevision avr 
  • Kabel usb
  • Download simulasi proteus
1. Sambungkan seluruh komponen dengan board minimum system

CATATAN !
1. Pastikan jalur colom dan row kepad sudah benar,agar character yang keluar sama 
2. Jangan langsung copy paste program dibawah,karena akan terjadi error
3. Apabila settingan osc ic kalian belum diatur masih (default 1Mhz) bisa kalian baca disini

2. Buat program seperti dibawah ini pada software codevisionavr,apabila ada yang belum tau cara menggunakan software codevision avr bisa baca disini
/*******************************************************
This program was created by the
CodeWizardAVR V3.12 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Keypad Password CodevisionAVR 
Version : 
Date    : 6/23/2016
Author  : Fickry Muhammad 
Website : aruselektronika.blogspot.com 
Comments: 


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*******************************************************/

#include <mega16.h>
#include <alcd.h>
#include <delay.h>
#include <stdlib.h>
#include <stdio.h>

char keypad[4];
char logo[4];
char pswd[4] = {'1','9','9','5'};
int a,b,c,d,e,f,g,h;

void scan_keypad() 
{
PORTD = 0b11111110;
delay_ms(30);
if (PIND.4 == 0 && a < 4) {keypad[a] = '1';logo[a] = '*';delay_ms(100);a++;}  //1
if (PIND.5 == 0 && a < 4) {keypad[a] = '4';logo[a] = '*';delay_ms(100);a++;}  //4
if (PIND.6 == 0 && a < 4) {keypad[a] = '7';logo[a] = '*';delay_ms(100);a++;}  //7
if (PIND.7 == 0 && a < 4) {keypad[a] = '*';logo[a] = '*';delay_ms(100);a++;}  //*

PORTD = 0b11111101;
delay_ms(30);
if (PIND.4 == 0 && a < 4) {keypad[a] = '2';logo[a] = '*';delay_ms(100);a++;}  //2
if (PIND.5 == 0 && a < 4) {keypad[a] = '5';logo[a] = '*';delay_ms(100);a++;}  //5
if (PIND.6 == 0 && a < 4) {keypad[a] = '8';logo[a] = '*';delay_ms(100);a++;}  //8
if (PIND.7 == 0 && a < 4) {keypad[a] = '0';logo[a] = '*';delay_ms(100);a++;}  //0

PORTD = 0b11111011;
delay_ms(30);
if (PIND.4 == 0 && a < 4) {keypad[a] = '3';logo[a] = '*';delay_ms(100);a++;}  //3
if (PIND.5 == 0 && a < 4) {keypad[a] = '6';logo[a] = '*';delay_ms(100);a++;}  //6
if (PIND.6 == 0 && a < 4) {keypad[a] = '9';logo[a] = '*';delay_ms(100);a++;}  //9
if (PIND.7 == 0) {c++;delay_ms(100);}                                         //enter #

PORTD = 0b11110111;
delay_ms(30);
if (PIND.4 == 0 && a < 4) {keypad[a] = 'A';logo[a] = '*';delay_ms(100);a++;}  //A
if (PIND.5 == 0 && a < 4) {keypad[a] = 'B';logo[a] = '*';delay_ms(100);a++;}  //B
if (PIND.6 == 0 && a < 4) {keypad[a] = 'C';logo[a] = '*';delay_ms(100);a++;}  //C
if (PIND.7 == 0 && a < 4) {keypad[a] = 'D';logo[a] = '*';delay_ms(100);a++;}  //D
}

void reset()
{   
    lcd_clear();
    PORTB.0 = 0;
    PORTB.1 = 0;
    a = 0;
    b = 0;
    c = 0;
    d = 0; 
    e = 0; 
    f = 0;
    for (e=0;e<4;e++)
    {
    keypad[e] ='';
    logo[e]   ='';
    }
}

void main(void)
{
lcd_init(16);

lcd_gotoxy(0,0);
lcd_putsf("aruselektronika.");
lcd_gotoxy(0,1);
lcd_putsf("blogspot.com");
delay_ms(1000);
lcd_clear();

DDRD    = 0b00001111;
PORTD   = 0b11110000; 
DDRB.0  = 1;
DDRB.1  = 1;
DDRB.7  = 0;
PORTB.7 = 1;

while (1)
      {  
        scan_keypad();
        
        lcd_gotoxy(0,0);
        lcd_putsf("Enter Passcode");
        
        lcd_gotoxy(0,1);
        for(b=0;b<sizeof(keypad);b++)
        {
        lcd_putchar(logo[b]);
        }
        
        if (c == 1)
        {
            for (d=0;d<sizeof(keypad);d++)
            {
                if (keypad[d] == pswd[d])
                {               
                g = 1;
                }
                else if (keypad[d] != pswd[d]) 
                {
                g = 2;
                break;               
                }    
            }   
            
            if (g == 1)
            {
            lcd_clear();
                while (g == 1)
                {
                PORTB.0 = 1;
                PORTB.1 = 0;
                lcd_gotoxy(5,0);
                lcd_putsf("Welcome");
                lcd_gotoxy(3,1);
                lcd_putsf("To My Life");
                    if (PINB.7 == 0)
                    {
                    reset();
                    break;
                    }
                }
            }         
            
            if (g == 2)
            {
            PORTB.0 = 0;
            PORTB.1 = 1;
            lcd_gotoxy(7,1);
            lcd_putsf("Failed");
            delay_ms(1000);
            reset(); 
            h++;
                if (h > 3)
                {
                lcd_clear();
                    while(h > 3)
                    {
                    lcd_gotoxy(0,0);
                    lcd_putsf("No More Trials");
                    lcd_gotoxy(0,1);
                    lcd_putsf("You Crime !");
                        if (PINB.7 == 0)
                        {
                        reset();
                        break;
                        }
                    }
                }
            }         
        }
      }    
}
3. Compile project pada software cvavr,apabila tidak terjadi error lanjut dengan proses upload atau build all project files 

4. Download program .hex (hasil compile) pada minimum sistem menggunakan usb asp baca disini,bila menggunakan simulasi tinggal kalian masukan file .hexnya ke dalam ic baca disini 

5. Jika kalian membuatnya pada simulasi,kalian coba play kemudian kalian tekan keypad sesuai instruksi/cara penggunaan dibawah ini 

Instruction 

kalian lihat pada bagian program char pswd= "1995"; itu adalah password yang ditanam pada board arduino (bisa kalian rubah sesuai keinginan),kemudian kalian lihat status led pada simulasi,led open dalam keaadaan off dan led close dalam keadan off,sekarang kalian coba tekan terlebih dahulu keypad secara sembarang,kemudian tekan enter ('#'),maka text pada lcd akan mencetak character "Failed",sekarang kalian coba masukan password yang benar ('1995'),maka lcd akan mencetak character "Welcome To My Live" dan led open akan on led close akan off,jika kalian 3x salah memasukan password maka lcd akan mencetak character "No More Trials You Crime !" dan kalian tidak akan pernah bisa mencoba memasukan password kembali kecuali kalian menekan tombol reset 

Development
Ini adalah keycode dasar,coba kalian kembangkan dengan menambahkan beberapa feature contohnya merubah password,reset lewat keypad dan lain lain,kalian juga bisa menambahkan motor untuk membuka pintu tersebut secara otomatis   

Share:

2 komentar:

  1. Mas, kalau mau buat programnya di keypad 3x4 seperti apa yaa?

    BalasHapus
  2. Mas, kalau mau buat programnya di keypad 3x4 seperti apa yaa?

    BalasHapus

Copyright © FILAB | Powered by FILAB
Design by Fickry Muhammad | Technology by Filab.id