#include <Keypad.h>
#include <Wire.h> // Memanggil library wire.h
#include <LiquidCrystal_I2C.h> // Memanggil library LCD dengan I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C(0x27) LCD dan Jenis LCD (16x2)
const byte ROWS = 4; //4 baris
const byte COLS = 4; //4 kolom
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte colPins[COLS] = {5, 4, 3, 2}; // pin 2,3,4,5 untuk pin kolom keypad (lihat gambar)
byte rowPins[ROWS] = {9, 8, 7, 6}; // pin 6,7,8,9 untuk pin baris keypad (lihat gambar)
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int ledPin = 13;
int statusLed = LOW;
char stringAngka[17];
int indexKeypad = 0;
int angka=0;
void setup(){
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
lcd.init(); // instruksi untuk memulai LCD
lcd.begin(16,2); // instruksi untuk menggunakan lcd 16x2
lcd.backlight(); // instruksi untuk mengaktifkan lampu latar LCD
lcd.setCursor(4,0); // karakter tampil pada kolom 5 baris 1 LCD 1602
lcd.print("Tampilan"); // karakter tampil pada kolom 0 baris 2 LCD 1602
lcd.setCursor(0,1); //karakter tampil pada kolom 5 baris 1 LCD 1602
lcd.print("Keypad 4x4 & LCD"); //karakter tampil pada kolom 0 baris 2 LCD 1602
delay(2000);
lcd.clear();
}
void loop(){
lcd.setCursor(4,0); //karakter tampil pada kolom 5 baris 1 LCD 1602
lcd.print("Keypad LCD"); //karakter tampil pada kolom 0 baris 2 LCD 1602
lcd.setCursor(0,1); //karakter tampil pada kolom 5 baris 1 LCD 1602
lcd.print("Tombol keypad: "); //karakter tampil pada kolom 0 baris 2 LCD 1602
char key = keypad.getKey();
if (key) {
Serial.println(key);
switch (key)
{
case '0': // Instruksi untuk menampilkan karakter pada LCD dan Serial monitor
case '1':
lcd.setCursor(15, 1);
lcd.print("1");
angka=1;
break;
case '2':
lcd.setCursor(15, 1);
lcd.print("2");
angka=2;
break;
case '3':
lcd.setCursor(15, 1);
lcd.print("3");
angka=3;
break;
case '4':
lcd.setCursor(15, 1);
lcd.print("4");
angka=4;
break;
case '5':
lcd.setCursor(15, 1);
lcd.print("5");
angka=5;
break;
case '6':
lcd.setCursor(15, 1);
lcd.print("6");
angka=6;
break;
case '7':
lcd.setCursor(15, 1);
lcd.print("7");
angka=7;
break;
case '8':
lcd.setCursor(15, 1);
lcd.print("8");
angka=8;
break;
case '9':
lcd.setCursor(15, 1);
lcd.print("9");
angka=9;
break;
case 'A':
case 'B':
case 'C':
case 'D':
case '#':
for (int i = 0; i < angka; i++) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
break;
}
}
}