#include <LiquidCrystal.h>
LiquidCrystal lcd(18,5,17,16,4,0);
const int row[4]={12,14,27,26};
const int col[4]={25,33,32,13};
void setup()
{
lcd.begin(16,2);
lcd.print("Keypad program");
delay(1000);
}
void loop() {
getKey();
delay(100);
}
void getKey(void)
{
int rows=-1,cols=-1;
for (int i=0;i<4;i++){
pinMode(row[i], INPUT_PULLUP);
pinMode(col[i], OUTPUT);
digitalWrite(col[i], LOW);
}
for (int i=0;i<4;i++){
if(digitalRead(row[i])==0){
rows=i;
}
}
if(rows!=-1){
for(int i=0;i<4;i++){
pinMode(col[i], INPUT_PULLUP);
pinMode(row[i], OUTPUT);
digitalWrite(row[i], LOW);
}
for(int i=0;i<4;i++){
if(digitalRead(col[i])==0){
cols=i;
}
}
}
if(cols!=-1){
if(rows==0){
if(cols==0){
num('1');
}
else if(cols==1){
num('2');
}
else if(cols==2){
num('3');
}
else if(cols==3){
num('A');
}
}
else if(rows==1){
if(cols==0){
num('4');
}
else if(cols==1){
num('5');
}
else if(cols==2){
num('6');
}
else if(cols==3){
num('B');
}
}
else if(rows==2){
if(cols==0){
num('7');
}
else if(cols==1){
num('8');
}
else if(cols==2){
num('9');
}
else if(cols==3){
num('C');
}
}
else if(rows==3){
if(cols==0){
num('*');
}
else if(cols==1){
num('0');
}
else if(cols==2){
num('#');
}
else if(cols==3){
num('D');
}
}
}
}
void num(char num){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(("Key Pressed: "));
lcd.print(num);
delay(500);
}