#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,9,8,7);
void Initkpm()
{
pinMode(6,OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(3,OUTPUT);
pinMode(2,INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(0, INPUT_PULLUP);
pinMode(13, INPUT_PULLUP);
}
void setup() {
// put your setup code here, to run once:
lcd.begin(8,2);
Initkpm();
lcd.setCursor(0,0);
lcd.print("KEYPAD PRESS");
}
unsigned int kpmLUT[4][4]=
{
{0,1,2,3},
{4,5,6,7},
{8,9,10,11},
{12,13,14,15}
};
unsigned int ColScan(void)
{
unsigned int t;
t=digitalRead(2)&digitalRead(1)&digitalRead(0)&digitalRead(13);
return t;
}
unsigned int RowCheck(void)
{
unsigned int rNO;
while(ColScan());
digitalWrite(6,LOW);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
if(ColCheck()==0)
rNO=0;
digitalWrite(6,HIGH);
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
if(ColCheck()==0)
rNO=1;
digitalWrite(6,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
if(ColCheck()==0)
rNO=2;
digitalWrite(6,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
if(ColCheck()==0)
rNO=3;
return rNO;
}
unsigned int ColCheck(void)
{
unsigned int cNO;
if(digitalRead(2)==0)
cNO=0;
if(digitalRead(1)==0)
cNO=1;
if(digitalRead(0)==0)
cNO=2;
if(digitalRead(13)==0)
cNO=3;
return cNO;
}
unsigned int KeyScan(void)
{
unsigned int rNO,cNO;
rNO=RowCheck();
cNO=ColCheck();
while(ColScan()==0);
return kpmLUT[rNO][cNO];
}
unsigned int keyvalue;
void loop() {
// put your main code here, to run repeatedly
// keyvalue=KeyScan();
lcd.setCursor(0,1);
lcd.print("hello");
lcd.print(keyvalue);
lcd.setCursor(0,1);
lcd.print(" ");
}