#define CS_PIN 10
#define RESET_PIN 9
#define DC_PIN 8
#define MOSI_PIN 11
#define SCK_PIN 13
// Komut ve veri gönderimi için genel bir fonksiyon
void sendSPI(uint8_t data, bool isCommand) {
digitalWrite(DC_PIN, isCommand ? LOW : HIGH);
digitalWrite(CS_PIN, LOW);
shiftOut(MOSI_PIN, SCK_PIN, MSBFIRST, data);
digitalWrite(CS_PIN, HIGH);
}
// Ekranı sıfırlama ve başlatma
void initILI9341() {
pinMode(CS_PIN, OUTPUT);
pinMode(RESET_PIN, OUTPUT);
pinMode(DC_PIN, OUTPUT);
pinMode(MOSI_PIN, OUTPUT);
pinMode(SCK_PIN, OUTPUT);
digitalWrite(RESET_PIN, LOW);
delay(50);
digitalWrite(RESET_PIN, HIGH);
delay(50);
sendSPI(0x01, true); // Yazılım sıfırlama
delay(100);
sendSPI(0x11, true); // Sleep OUT
delay(120);
sendSPI(0x29, true); // Display ON
}
// Kare çizimi
void drawRectangle(int x, int y, int width, int height, uint16_t color) {
sendSPI(0x2A, true); // X adresi ayarı
sendSPI(x >> 8, false); sendSPI(x & 0xFF, false);
sendSPI((x + width - 1) >> 8, false); sendSPI((x + width - 1) & 0xFF, false);
sendSPI(0x2B, true); // Y adresi ayarı
sendSPI(y >> 8, false); sendSPI(y & 0xFF, false);
sendSPI((y + height - 1) >> 8, false); sendSPI((y + height - 1) & 0xFF, false);
sendSPI(0x2C, true); // Bellek yazma
for (uint32_t i = 0; i < width * height; i++) {
sendSPI(color >> 8, false);
sendSPI(color & 0xFF, false);
}
}
void setup() {
initILI9341();
drawRectangle(10, 10, 90, 90, 0xF800); // Kırmızı kare çiz
}
void loop() {
// Döngü gerekmez
}