#
include<LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int row[]={A0,A1,A3,A4};// Defining row pins of keypad connected to Arduino pins
int col[]={10,11,12,13};//Defining column pins of keypad connected to Arduino
int i,j,lcd_count,count=1,key_id=0,flag,entry=0;// See About the Program
int col_scan;// Variable to identify a key press
char temp_press; // Variable to hold value of key press
char check[6],pass[6]; // See About the Program
char str;
const int rxpin = 8; // pin used to receive
const int txpin = 9; // pin used to transmit
SoftwareSerial gsm(rxpin, txpin);
String noHP;


void setup()
{


//----- NOMOR HP HARUS DIISI DENGAN NOMOR TUJUAN
  noHP="087821329501";
for(i=0;i<=3;i++)
{
pinMode(row[i],OUTPUT);
pinMode(col[i],INPUT);
pinMode(A2,OUTPUT);
digitalWrite(col[i],HIGH);
Serial.begin(9600);
  gsm.begin(9600);
}
lcd.begin(16,2);
lcd.print("masukkan 5 kode");
}

/* Main Program Begins */

void loop()
{
 while(entry<=4)// Password Setting Loop begins
{
SetPassword();
}
// Password Setting Loop Ends

key_id=0;
keyscan(); // Scan for a Key Press

/* Actions on Key Press begins */

if(key_id==1) // Condition to Check Key is Pressed
{
 check[count]=temp_press;
count++;

/* Condition to Unlock Begins*/

if(temp_press=='A')
{
  checkPassword();
if(flag==0)
{
lcd.setCursor(0,0);
lcd.print("Tidak Terkunci");
digitalWrite(A2,1);
sendsms(noHP,"pintu terbuka bos! ");delay(1000);
}else{
lcd.setCursor(0,0);
lcd.print("Salah PASSWORD");
delay(200);
lcd.clear();
lcd.print("Terkunci");
digitalWrite(A2,0);
}
count=1; // Resetting the counter variable
}

/* Condition to Unlock Ends*/

/* Condition to Change Password Begins */

else if(temp_press=='C')
{
checkPassword();
if(flag==0)
{
lcd.setCursor(0,0);
lcd.print("masukkan password");
key_id=0;
entry=0;
}else{
lcd.setCursor(0,0);
lcd.print("salah PASSWORD");
}
count=1; // Resetting the counter variable
}

/* Condition to Change Password Ends */

/* Condition to LOCK Begins*/

else if(temp_press=='B')
{
lcd.setCursor(0,0);
lcd.print("terkunci");
count=1; // Resetting the counter variable
}
/* Condition to LOCK Ends*/
}

/* Actions on Key Press Ends*/
}

/* Main Program Ends */

void sendsms(String nomorHP,String pesan)
{
   gsm.print("AT+CMGS=");
   gsm.write((byte)34);
   gsm.print(nomorHP);
   gsm.write((byte)34);
   gsm.println();  
   delay(1000);
   Serial.println();
   gsm.print(pesan);
   gsm.write((byte)26);
   gsm.println();
   delay(1000);
   delay(2000);
}
void SetPassword() // Subroutine to SET User Defined Password
{
keyscan();
if(key_id==1)
{
if(temp_press=='A'||temp_press=='C'||temp_press=='B') // Condition to Check for an Invalid Keypress
{
lcd.setCursor(0,0);
lcd.print("salah kode");
entry=0;
}
else

{
  pass[entry]=temp_press;

}
}
key_id=0;
if(entry==5)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("verifikasi kode ");
}} // Subroutine to SET Password ENDS

char keyscan()// Subroutine to Scan Keypad for a Keypress
{
for(i=0; i<=3; i++)
{
digitalWrite(row[0],HIGH);
digitalWrite(row[1],HIGH);
digitalWrite(row[2],HIGH);
digitalWrite(row[3],HIGH);
digitalWrite(row[i],LOW);
for(j=0; j<=3; j++)
{
col_scan=digitalRead(col[j]);
if(col_scan==LOW)
{
  key_id=1;
  entry++;
temp_press=keypress(i,j);
lcd.setCursor(lcd_count++,1);
lcd.print(temp_press);
if(temp_press=='A'||temp_press=='C'||temp_press=='B')
{
lcd_count=0;
lcd.clear();
}
delay(300);
break;
}}
}}// Subroutine to Scan Keypress Ends

char keypress(int i, int j) // Subroutine to Identify the value of Key pressed
{
if(i==0&&j==0)
{
return('1');
}
if(i==0&&j==1)
{
return('2');
}
if(i==0&&j==2)
{
return('3');
}
if(i==0&&j==3)
{
return('A');
}
if(i==1&&j==0)
{
return('4');
}
if(i==1&&j==1)
{
return('5');
}
if(i==1&&j==2)
{
return('6');
}
if(i==1&&j==3)
{
return('B');
}
if(i==2&&j==0)
{
return('7');
}
if(i==2&&j==1)
{
return('8');
}
if(i==2&&j==2)
{
return('9');
}
if(i==2&&j==3)
{
return('C');
}
if(i==3&&j==0)
{
return('*');
}
if(i==3&&j==1)
{
return('0');
}
if(i==3&&j==2)
{
return('#');
}
if(i==3&&j==3)
{
return('D');
}
} // Subroutine to identify Keypress Ends

void checkPassword() // Subroutine to Check User Input Data with SET Password
{
flag=0;
for(i=1;i<=5&&flag==0;i++)
{
if(check[i]==pass[i])
{
flag=0;
}
else
{flag=1;
}}} // Subroutine to check password ends\




Next
Newer Post
Previous
This is the last post.

0 comments:

Post a Comment

 
Cyber Code © 2014. All Rights Reserved. Powered by Blogger
Top