Arduino_GFX Kütüphanesi ile ST7789 TFT LCD Kullanımı

👤 Yazar: ozcan 📅 Tarih: 19.07.2026 06:58 👁️ Görüntüleme: 8

Arduino_GFX Kütüphanesi ile ST7789 TFT LCD Kullanımı

Adafruit GFX kütüphanesi popüler olsa da, ESP8266, ESP32 ve STM32 gibi yüksek hızlı mikrodenetleyicilerde ya da daha optimize bellek tüketimi istendiğinde Arduino_GFX (Moononourth tarafından geliştirilen) kütüphanesi çok daha güçlü bir alternatiftir. Bu kütüphane, donanıma özel derin optimizasyonlar içerdiğinden ekran tazeleme hızını (FPS) ciddi oranda artırır ve özellikle dairesel/oval çizimlerde çok daha pürüzsüz sonuçlar verir.

Arduino_GFX Veri Yolu (Bus) Mantığı: Bu kütüphanenin en büyük farkı, ekran sürücüsü ile haberleşme hattını birbirinden ayırmasıdır. Önce donanımınıza uygun bir SPI veri yolu nesnesi (Arduino_DataBus) oluşturulur, ardından bu hat ST7789 sürücü nesnesine parametre olarak geçilir. Bu mimari, işlemci değiştikçe kodun taşınabilirliğini inanılmaz kolaylaştırır.

Arduino ve ST7789 SPI TFT LCD bağlantı şeması

Donanım ve Gerilim Bölücü Uyarısı (3.3V Hat Hassasiyeti): ST7789 ekran paneli ve mantıksal sinyal hatları 3.3V gerilim ile çalışır. 5V ile çalışan standart bir Arduino Uno veya Nano kullanıyorsanız; Arduino'nun SPI çıkış pinlerini (MOSI, SCK, CS, RST, DC) ekrana doğrudan bağlamak ekrandaki piksellerin bozulmasına veya video parazitlerine (ekranda karıncalanma) yol açabilir. Sinyal hatlarında mutlaka 1KΩ ve 2KΩ dirençler kullanılarak gerilim bölücü yapılmalı ya da bir Lojik Seviye Dönüştürücü (Logic Level Shifter) entegresi kullanılmalıdır.

Arduino_GFX Tabanlı Gelişmiş Çizim Kod Bloğu

Aşağıdaki kod, Arduino IDE kütüphane yöneticisinden kurabileceğiniz Arduino_GFX_Library yazılımını temel alır. Adafruit kütüphanesini kullanmadan, ST7789 (240x240) ekran üzerinde pürüzsüz geometrik şekiller ve renkli paneller oluşturur:

#include <Arduino_GFX_Library.h>

// ST7789 Donanımsal Kontrol Pinleri
#define TFT_CS         10
#define TFT_RST         9
#define TFT_DC          8

// Arduino Uno/Nano için Donanımsal SPI pinleri otomatik kullanılır:
// MOSI -> Pin 11, SCK -> Pin 13

// 1. ADIM: Donanımsal SPI Veri Yolu Nesnesini Tanımlıyoruz
Arduino_DataBus *bus = new Arduino_HWSPI(TFT_DC, TFT_CS);

// 2. ADIM: Veri yolunu ST7789 sürücüsüne bağlıyoruz (240x240 çözünürlük, IPS ekran)
// Parametreler: bus, rst, rotation (0), ips (true)
Arduino_GFX *gfx = new Arduino_ST7789(bus, TFT_RST, 0 /* rotation */, true /* ips */);

void setup() {
  Serial.begin(9600);
  
  // Ekran donanımını ve grafik motorunu başlatıyoruz
  if (!gfx->begin()) {
    Serial.println("Arduino_GFX baslatilamadi!");
  }

  // Ekranı tamamen siyah renk ile temizliyoruz
  gfx->fillScreen(BLACK);

  // --- BAŞLIK VE METİN TASARIMI ---
  gfx->setTextSize(2);
  gfx->setTextColor(CYAN);
  // Arduino_GFX kitaplığında imleç setCursor ile ayarlanır
  gfx->setCursor(35, 15);
  gfx->println("ARDUINO-GFX PANEL");

  // Üst ve Alt Süsleme Çizgileri
  gfx->drawFastHLine(0, 45, 240, MAGENTA);
  gfx->drawFastHLine(0, 200, 240, MAGENTA);

  // --- GEOMETRİK ÇİZİM UYGULAMALARI ---
  
  // İçi Boş ve Dolu Dikdörtgenler
  gfx->drawRect(20, 65, 80, 50, YELLOW);   // Sarı boş çerçeve
  gfx->fillRect(140, 65, 80, 50, BLUE);    // Mavi dolu kutu

  // Yuvarlatılmış Köşeli Dikdörtgen
  gfx->drawRoundRect(20, 135, 80, 50, 8, GREEN); // Köşe yarıçapı 8 piksel olan yeşil kutu

  // İçi Dolu Üçgen Çizimi (X0, Y0, X1, Y1, X2, Y2, Renk)
  gfx->fillTriangle(140, 185, 180, 135, 220, 185, RED);

  // Pürüzszen Çember Çizimi (Merkez_X, Merkez_Y, Yarıçap, Renk)
  gfx->drawCircle(60, 160, 15, WHITE);

  // --- DİNAMİK PROGRESS BAR (İLERLEME ÇUBUĞU) ---
  gfx->drawRect(20, 212, 200, 15, WHITE); // Bar çerçevesi
  gfx->fillRect(22, 214, 150, 11, GREEN); // %75 Doluluk oranı simülasyonu
}

void loop() {
  // Canlı sensör verileri veya ekran rotasyon animasyonları burada işlenebilir
}

Arduino_GFX Kütüphanesinin Temel Avantajları

Adafruit yerine Arduino_GFX tercih etmeniz web sitenizdeki teknik okurlar için şu avantajları beraberinde getirecektir:

Doğrudan İşaretçi (Pointer) Kullanımı: Kod yapısında fark ettiğiniz üzere fonksiyonlar nokta (.) yerine ok işareti (->) ile çağrılır. Dinamik bellek yönetimi sayesinde işlemciye binen yük azalır.

Dahili Renk Tanımlamaları: Renk kodları için ST7789_BLACK gibi uzun ön takılar yazmak yerine doğrudan BLACK, WHITE, RED, GREEN, BLUE, CYAN, MAGENTA ve YELLOW kelimelerini yalın halde kullanabilirsiniz.

Çoklu Ekran Desteği: Projenize ileride farklı marka veya sürücülü (ILI9341, ST7735 vb.) bir ekran dahil etmek istediğinizde, sadece 2. adımdaki sürücü satırını değiştirmeniz yeterlidir; çizim fonksiyonlarınızın tamamı aynen çalışmaya devam eder.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1