#include <LiquidCrystal.h>
LiquidCrystal lcd(18,5,17,16,4,0);
const int keyPadRow[4]={12,14,27,26};
const int keyPadCol[4]={25,33,32,13};
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
lcd.print("keypad program");
delay(1000);
}
void loop() {
// put your main code here, to run repeatedly:
getkey();
delay(100);
}
void getkey(void){
int row=-1,col=-1;
for(int i=0;i<4;i++){
pinMode(keyPadRow[i], INPUT_PULLUP);
pinMode(keyPadCol[i], OUTPUT);
digitalWrite(keyPadCol[i], LOW);
}
for(int i=0;i<4;i++){
if(digitalRead(keyPadRow[i])==0){
row=i;
}
}
if(row!=-1){
for(int i=0;i<4;i++){
pinMode(keyPadCol[i], INPUT_PULLUP);
pinMode(keyPadRow[i], OUTPUT);
digitalWrite(keyPadRow[i], LOW);
}
for(int i=0;i<4;i++){
if(digitalRead(keyPadCol[i])==0){
col=i;
}
}
if(col!=-1){
if(row==0){
if(col==0){
lcd_display_num('1');
}
else if(col==1){
lcd_display_num('2');
}
else if(col==2){
lcd_display_num('3');
}
else if(col==3){
lcd_display_num('A');
}
}
if(row==1){
if(col==0){
lcd_display_num('4');
}
else if(col==1){
lcd_display_num('5');
}
else if(col==2){
lcd_display_num('6');
}
else if(col==3){
lcd_display_num('B');
}
}
if(row==2){
if(col==0){
lcd_display_num('7');
}
else if(col==1){
lcd_display_num('8');
}
else if(col==2){
lcd_display_num('9');
}
else if(col==3){
lcd_display_num('C');
}
}
if(row==3){
if(col==0){
lcd_display_num('*');
}
else if(col==1){
lcd_display_num('0');
}
else if(col==2){
lcd_display_num('#');
}
else if(col==3){
lcd_display_num('D');
}
}
}
}
}
void lcd_display_num(char num){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("key pressed:");
lcd.print(num);
delay(500);
}