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_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.

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
}
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.
Henüz yorum yapılmamış. İlk yorumu siz yapın!