// Pin tanımlamaları
const int ROWS = 4;
const int COLS = 4;
int rowPins[ROWS] = {13, 12, 11, 10}; // Satır pinleri
int colPins[COLS] = {7, 6, 5, 4}; // Sütun pinleri
char keyMap[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
void setup() {
Serial.begin(9600);
// Satır pinlerini OUTPUT yap
for (int i = 0; i < ROWS; i++) {
pinMode(rowPins[i], OUTPUT);
digitalWrite(rowPins[i], HIGH); // Başlangıçta yüksek seviyeye çek
}
// Sütun pinlerini INPUT_PULLUP yap
for (int i = 0; i < COLS; i++) {
pinMode(colPins[i], INPUT_PULLUP);
}
}
void loop() {
char key = getKey();
if (key != 0) {
Serial.println("Tuş basıldı: " + String(key));
delay(500); // İstenirse debounce için bir bekleme eklenebilir
}
}
char getKey() {
for (int i = 0; i < ROWS; i++) {
// Belirli bir satırı düşük yap
digitalWrite(rowPins[i], LOW);
// Sütunları kontrol et
for (int j = 0; j < COLS; j++) {
if (digitalRead(colPins[j]) == LOW) {
// Tuşa basıldı
digitalWrite(rowPins[i], HIGH); // Satırı tekrar yüksek yap
return keyMap[i][j];
}
}
// Belirli bir satırı tekrar yüksek yap (sıradaki satır için)
digitalWrite(rowPins[i], HIGH);
}
// Hiçbir tuşa basılmadı
return 0;
}