#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

 const byte ROWS = 4;  // 
 const byte COLS = 4; 

char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; // - detail arduino - pin detail - 
byte colPins[COLS] = {5, 4, 3, 2}; 

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
}
  
void loop(){
  static int c=0; // for lcd col and row
  static int r=0;
  char customKey = customKeypad.getKey();
  if(customKey)
  {
    lcd.setCursor(c,r);
    lcd.print(customKey);
    c++;
    if(c==16 && r==0)
    {
      c=0;
      r=1;
    }

    if(c==16&&r==1)
    {
      c=0;
      r=0;
      lcd.init();
    }
  }
    
 
  

}