/*
const int rows = 8;
const int cols = 8;
bool matrix[rows][cols] = {
{HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW}
};
int katodaLED[] = {22, 23, 24, 25, 26, 27, 28, 29};
int anodaLED[] = {37, 36, 35, 34, 33, 32, 31, 30};
int encoderPinA=2;
int encoderPinB=3;
int encoderSwitchPin=4;
int encoderValue=0;
int encoderValue = 0;
int lastEncoderValue = 0;
bool buttonState = HIGH;
bool lastButtonState = HIGH;
int currentRow = 0;
int currentCol = 0;
unsigned long lastMatrixUpdate = 0;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(katodaLED[i], OUTPUT);
pinMode(anodaLED[i], OUTPUT);
pinMode(katodaLED[i], HIGH);
pinMode(anodaLED[i], LOW);
}
}
void loop() {
digitalWrite(anodaLED[22], HIGH);
digitalWrite(katodaLED[30], LOW);
for (int row = 0; row < 8; row++) {
// Tüm LED'leri kapat
for (int i = 0; i < 8; i++) {
digitalWrite(katodaLED[i], HIGH); // Katodları kapat
digitalWrite(anodaLED[i], LOW); // Anodları kapat
}
for (int col = 7; col >= 0; col--) {
if (row % 2 == 0) {
// Satırın sonundan başla ve sola doğru ilerle
digitalWrite(katodaLED[row], LOW);
digitalWrite(anodaLED[col], HIGH);
} else {
// Satırın başından başla ve sola doğru ilerle
digitalWrite(katodaLED[row], LOW);
digitalWrite(anodaLED[7 - col], HIGH);
}
delay(250); // Her LED'in yanma süresi
// Mevcut LED'i kapat
if (row % 2 == 0) {
digitalWrite(anodaLED[col], LOW);
} else {
digitalWrite(anodaLED[7 - col], LOW);
}
}
}
}
*/
const int encoderPinA = 2; // rotary encoder pin A
const int encoderPinB = 3; // rotary encoder pin B
const int numRows = 8;
const int numCols = 8;
int katodaLED[] = {22, 23, 24, 25, 26, 27, 28, 29};
int anodaLED[] = {37, 36, 35, 34, 33, 32, 31, 30};
int encoderPos = 0;
int lastEncoderPos = 0;
bool matrix[numRows][numCols] = {
{HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW},
{LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW}
};
void setup() {
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
attachInterrupt(digitalPinToInterrupt(encoderPinA), updateEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoderPinB), updateEncoder, CHANGE);
// LED pinlerini çıkış olarak ayarla
for (int i = 0; i < 8; i++) {
pinMode(katodaLED[i], OUTPUT);
pinMode(anodaLED[i], OUTPUT);
}
digitalWrite(katodaLED[numRows], LOW);
digitalWrite(anodaLED[7 - numCols], HIGH);
}
void loop() {
// Your main code here
}
void updateEncoder() {
int valueA = digitalRead(encoderPinA);
int valueB = digitalRead(encoderPinB);
if ((valueA == HIGH) && (valueB == LOW)) {
encoderPos++;
if(encoderPos++){
for(int i=0; i<8; i++){
digitalWrite(katodaLED[i], LOW);
digitalWrite(anodaLED[i], HIGH);
}
}
} else if ((valueA == LOW) && (valueB == HIGH)) {
encoderPos--;
}
encoderPos = constrain(encoderPos, 0, numRows * numCols - 1); // Ensure the position is within the matrix size
if (encoderPos != lastEncoderPos) {
int row = encoderPos / numCols;
int col = encoderPos % numCols;
// Saat yönünde dönme
digitalWrite(anodaLED[col], HIGH);
if (col > 0) {
digitalWrite(anodaLED[col - 1], LOW);
} else if (row > 0) {
digitalWrite(anodaLED[numCols - 1], LOW);
}
lastEncoderPos = encoderPos;
}
}