#include <Keypad.h>
#include <LedControl.h>
#define MAX_DEVICES 1
// MAX7219 bağlantıları
const int DIN = 22;
const int CLK = 24;
const int CS = 23;
// MAX7219 ve 8x8 LED matrisi nesnesi
LedControl lc = LedControl(DIN, CLK, CS, 1);
int x = 0;
int y = 0;
// Satır ve sütun sayısını tanımlayın
const byte ROWS = 8; // 8 satır
const byte COLS = 8; // 8 sütun
// Satır ve sütun pinlerini belirtin
byte rowPins[ROWS] = {2, 3, 4, 5, 6, 7, 8, 9};
byte colPins[COLS] = {10, 11, 12, 13, 14, 15, 16, 17};
// Keypad düzenine göre karakterleri atayın
char keys[ROWS][COLS] = {
{'1', '2', '3', '4', '5', '6', '7', '8'},
{'9', 'A', 'B', 'C', 'D', 'E', 'F', 'G'},
{'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'},
{'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W'},
{'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e'},
{'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'},
{'n', 'o', 'p', 'q', 'r', 's', 't', 'u'},
{'v', 'w', 'x', 'y', 'z', '0', '*', '#'}
};
// Tuşların değerlerini saklamak için bir dizi tanımlayın
String keyValues[ROWS][COLS] = {
{"KS1", "AS1", "FS1", "VS", "SS", "FS2", "AS2", "KS2"},
{"PS0", "PS1", "PS2", "PS3", "PS4", "PS5", "PS6", "PS7"},
{"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8"},
{"B9", "B10", "B11", "B12", "B13", "B14", "B15", "B16"},
{"B17", "B18", "B19", "B20", "B21", "B22", "B23", "B24"},
{"B25", "B26", "B27", "B28", "B29", "B30", "B31", "B32"},
{"PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7"},
{"KB1", "AB1", "FB1", "VB", "SB", "FB2", "AB2", "KB2"}
};
// Keypad nesnesini tanımlayın
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String degerAl = ""; // İlk basılan tuşun değeri
String ikinciDeger = ""; // İkinci basılan tuşun değeri
int firstRow, firstCol; // İlk tuşun satır ve sütun bilgileri
bool firstKeyPressed = false; // İlk tuşun basılıp basılmadığını takip eder
void setup() {
Serial.begin(9600); // Seri iletişimi başlatın
lc.shutdown(0, false); // Uyanık modu
lc.setIntensity(0, 8); // Parlaklık (0-15 arasında)
lc.clearDisplay(0); // Ekranı temizle
}
void loop() {
char key = keypad.getKey(); // Basılan tuşu okuyun
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLS; col++) {
if (keys[row][col] == key) {
// LED matrisinde basılan tuşa karşılık gelen LED'i yak
// lc.clearDisplay(0); // Diğer LED'leri kapat
lc.setLed(0,col , row, true); // İlgili LED'i yak
delay(500); // LED'in kısa süre yanmasını sağla
lc.setLed(0,col ,row , false); // LED'i söndür
}
if ( keyValues[row][col] =="PB0"&&keys[row][col] == key) {//piyon beyaz 0 basılı ise önden ikiled yak
if (row >= 6) {
Serial.println(row);
lc.setLed(0, col, row - 2, true);
delay(500); // LED'in kısa süre yanmasını sağla
lc.setLed(0,col ,row -2, false); // LED'i söndür
}
if (row <= 6) {
Serial.println(row);
lc.setLed(0, col, row - 1, true);
delay(500); // LED'in kısa süre yanmasını sağla
lc.setLed(0,col ,row -1, false); // LED'i söndür
}
}
}
}
if (key) { // Eğer bir tuşa basılmışsa
Serial.print("Basılan tuş: ");
Serial.println(key);
// İlk tuşa basıldığında
if (!firstKeyPressed) {
for (int r = 0; r < ROWS; r++) {
for (int c = 0; c < COLS; c++) {
if (keys[r][c] == key) {
degerAl = keyValues[r][c]; // İlk tuşun değerini kaydet
firstRow = r;
firstCol = c;
firstKeyPressed = true; // İlk tuş basıldı olarak işaretle
Serial.print("İlk tuş değeri: ");
Serial.println(degerAl);
break;
}
}
}
}
// İkinci tuşa basıldığında
else {
for (int r = 0; r < ROWS; r++) {
for (int c = 0; c < COLS; c++) {
if (keys[r][c] == key) {
ikinciDeger = keyValues[r][c]; // İkinci tuşun değerini kaydet
Serial.print("İkinci tuş değeri: ");
Serial.println(ikinciDeger);
// İlk ve ikinci tuşun değerlerini birbirine atayın
keyValues[firstRow][firstCol] = ikinciDeger;
keyValues[r][c] = degerAl;
Serial.print("Yeni birinci tuş değeri: ");
Serial.println(keyValues[firstRow][firstCol]);
Serial.print("Yeni ikinci tuş değeri: ");
Serial.println(keyValues[r][c]);
// İlk tuşu sıfırla
firstKeyPressed = false;
break;
}
}
}
}
}
}