int rows[] = {23,4,16,32, 33, 25}; // 3 baris
int cols[] = {27,26,22,21,19, 18, 5, 17}; // 4 kolom
char keys[6][8] = {
{'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I'},
{'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K'},
{'Z', 'X', 'C', 'V', 'B', 'N', 'M', ','},
{'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K'}, // Baris 1: QWER
{'1', '2', '3', '4', '5', '6', '7', '8'}, // Baris 2: ASDF
{'Z', 'X', 'C', 'V', 'B', 'N', 'M', ','} // Baris 3: Macro keys (M1, M2, M3, M4)
};
void setup() {
Serial.begin(115200);
Serial.println("Keyboard Ready!");
// Inisialisasi pin rows sebagai OUTPUT
for (int i = 0; i < 6; i++) {
pinMode(rows[i], OUTPUT);
digitalWrite(rows[i], HIGH); // Baris diset HIGH
}
// Inisialisasi pin cols sebagai INPUT_PULLUP
for (int i = 0; i < 8; i++) {
pinMode(cols[i], INPUT_PULLUP);
}
}
void loop() {
// Scan baris dan kolom untuk mendeteksi tombol yang ditekan
for (int i = 0; i < 6; i++) {
digitalWrite(rows[i], LOW); // Aktifkan baris i
for (int j = 0; j < 8; j++) {
if (digitalRead(cols[j]) == LOW) { // Jika tombol ditekan
Serial.print("Tombol ");
Serial.print(keys[i][j]); // Cetak huruf tombol yang ditekan
Serial.println(" ditekan!");
delay(300); // Debounce sederhana
}
}
digitalWrite(rows[i], HIGH); // Matikan baris i
}
}