#include <Keypad.h>
// Konfigurasi keypad
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {13, 12, 14, 27}; // Pin baris keypad
byte colPins[COLS] = {26, 25, 33, 32}; // Pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Konfigurasi pin untuk seven segment display (Common Cathode)
const int segPins[7] = {4, 16, 17, 18, 19, 21, 22}; // Pin A-G pada seven segment
// Definisi pola angka untuk seven segment
byte digits[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
// Fungsi untuk menampilkan angka pada seven segment display
void displayDigit(int number) {
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], !digits[number][i]);// Set pin sesuai pola angka
}
}
void setup() {
// Set semua pin pada seven segment sebagai output
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
Serial.begin(9600); // Untuk monitoring serial di Wokwi
}
void loop() {
char key = keypad.getKey(); // Membaca input dari keypad
if (key != NO_KEY) { // Jika ada tombol ditekan
if (key >= '0' && key <= '9') { // Hanya menerima input angka
int num = key - '0'; // Konversi char ke integer
displayDigit(num); // Tampilkan angka di seven segment
Serial.print("Key pressed: "); // Tampilkan di Serial Monitor
Serial.println(num);
}
}
}