#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
const byte ROWS = 4; // Jumlah baris keypad
const byte COLS = 4; // Jumlah kolom keypad
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {33, 32, 25, 27}; // Hubungkan baris keypad ke pin digital
byte colPins[COLS] = {27, 14, 12, 13}; // Hubungkan kolom keypad ke pin digital
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Adafruit_SSD1306 display(128,64, &Wire, -1);
void setup() {
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)){
Serial.println("Modul OLED gagal dimulai");
}
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Inisialisasi layar OLED
display.display();
delay(2000); // Tunggu 2 detik
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Press a key:");
display.display();
delay(1000); // Tunggu 1 detik
Serial.begin(115200);
}
void loop() {
char key = keypad.getKey(); // Baca input dari keypad
if (key) { // Jika tombol ditekan
display.clearDisplay(); // Bersihkan layar
display.setCursor(0,0);
display.print("Key pressed: ");
display.println(key); // Tampilkan karakter yang dibaca pada layar OLED
display.display();
delay(500); // Tunggu 0.5 detik sebelum membaca input selanjutnya
}
}