#include <SPI.h>
#include "dosya.h"
// Pin tanımlamaları
#define LATCH_PIN 5 // STCP pin
// Kontrol değişkeni
bool tersle = false; // Bu değişken veriyi tersleyecek mi belirler
bool aynala = false; // Bu değişken satırın tamamını aynalayacak mı belirler
int shift_adedi ;
void setup() {
Serial.begin(115200); // Hızlı bir baud rate kullanımı
pinMode(LATCH_PIN, OUTPUT);
// SPI ayarları
SPI.begin(); // Varsayılan pinlerle SPI'yi başlat
SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
shift_adedi = COLS/8;
Serial.println(ROWS);
Serial.println(COLS);
Serial.println(COLS/8);
}
void loop() {
delay(1000);
// Her satırı 74HC595'e gönder (ayna ve tersleme)
for (int i = ROWS-1; i >= 0; i--) {
digitalWrite(LATCH_PIN, LOW);
// Satırdaki veriyi al
uint8_t satirVerisi[COLS];
for (int k = 0; k < shift_adedi; k++) {
for (int j = 0; j < 8; j++) {
satirVerisi[k * 8 + j] = dosya[i][k * 8 + j];
}
}
// Satırı aynala (tersten yerleştir)
if (aynala) {
for (int m = 0; m < (COLS/2); m++) {
uint8_t temp = satirVerisi[m];
satirVerisi[m] = satirVerisi[COLS-1 - m];
satirVerisi[COLS-1 - m] = temp;
}
}
// 96 bit veriyi 12 adet 8-bit parça halinde gönder
for (int k = 0; k < shift_adedi; k++) {
uint8_t veri = 0;
// 8 bitlik parçayı alın
for (int j = 0; j < 8; j++) {
veri |= (satirVerisi[k * 8 + j] << (7 - j));
}
// Veri terslenecek mi kontrol et
if (tersle) {
veri = ~veri; // Veriyi tersle
}
// SPI ile veriyi gönder
SPI.transfer(veri);
}
digitalWrite(LATCH_PIN, HIGH);
delay(50); // 50 ms bekle
//Serial.println(i);
// Serial.print("/");
//Serial.println(k);
}
SPI.endTransaction(); // SPI işlemi sonlandır
}