#include <Keypad.h>
// Konfigurasi keypad
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] = {15, 16, 17, 18}; // Pin baris
byte colPins[COLS] = {19, 21, 22, 23}; // Pin kolom
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Konfigurasi pin seven-segment display (disesuaikan)
const int segments[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
};
// Pin GPIO untuk setiap segmen (a-g)
int segmentPins[7] = {2, 12, 13, 14, 25, 26, 27}; // a-g
void setup() {
Serial.begin(9600); // Debugging untuk memonitor input keypad
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void displayNumber(int num) {
Serial.print("Displaying number: ");
Serial.println(num);
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], segments[num][i] ? LOW : HIGH); // LOW untuk menyalakan segmen pada common anode
}
}
void loop() {
char key = keypad.getKey(); // Baca input dari keypad
if (key) {
Serial.println(key); // Tampilkan input keypad di Serial Monitor
int num = key - '0'; // Konversi karakter ke angka
if (num >= 0 && num <= 9) {
displayNumber(num); // Tampilkan angka di seven-segment
}
}
}