siravia

Üyecik
Katılım
25 Haziran 2025
Mesajlar
1
Beğeniler
11
Öncelikle söylemek isterim ki bu proje tamamen kişisel meraktan doğan, "Neden daha iyisi olmasın?" sorusunun bir cevabıydı. Kendin yap projeleriyle ilgileniyorsanız ya da teknik detaylar ilginizi çekiyorsa, detaylara GitHub üzerinden de ulaşabilirsiniz.


Yazılımın desteklediği yani kullandığım donanım robobloqa ait quklight ürünü.

Bir süredir monitörüm için ambilight (DIY ekran arka aydınlatma) benzeri bir sistem arayışındaydım. Philips'in ürünleri bu konuda lider ama fiyatları özellikle Türkiye şartlarında oldukça yüksek. Kalitesine sözüm yok, gerçekten başarılı. Alternatif olarak 1000–2000 TL bandındaki bazı Çin menşeli ürünleri denedim, ancak hepsinde benzer problemler yaşadım:
  • Renk geçişleri çok sert ve ani oluyor
  • Ekranda en ufak bir değişim (hatta fare imleci hareketi bile) ışıkları değiştiriyor
  • LED geçişleri düşük FPS ile yapılıyor gibi; takıla takıla, akıcılıktan uzak
  • Yazılımlar yüksek CPU kullanıyor ve sistem performansını düşürüyor
Bu kadar zor olmamalı dedim ve son denediğim ürünün donanımını kullanarak kendi yazılımımı geliştirmeye karar verdim.

İlk Adım: Cihazın bilgisayarla Haberleşmesini Anlamak

Markanın kendi yazılımının USB üzerinden nasıl veri gönderdiğini çözmek için Wireshark ve USBPcap kullandım. Sonunda cihazın USB HID ile haberleştiğini buldum ve RGB verilerinin yapısını çıkarabildim.

Akış Planı Şu Şekildeydi:
  1. Ekran görüntüsü al
  2. Sol, üst ve sağ kenarlardan dominant renkleri hesapla
  3. Bu renkleri sürekli olarak ledlere gönder

Performans Odaklı Geliştirme

En büyük problemimiz buydu bunu yapamayacaksan bu projeyi yapmanın da bir anlamı yoktu.

Ekran görüntüsü alma işlemini klasik Windows API yerine DirectX ile yaptım. Hem daha hızlı hem de daha düşük sistem yüküyle çalışıyor. Dominant renk hesaplamasını ise CPU yerine GPU'ya devrettim. DirectX'ten aldığım görüntü üzerinde bir shader kullanarak renk analizini GPU ile gerçekleştirdim. Sonuçta renklerle dans eden bir donanım bu.

Ani Geçişler ve Ufak Değişimler Nasıl Önlenir?

Bu noktada iki strateji izledim:

Renk Toleransı:

Ufak RGB farklarını görmezden gelerek gereksiz geçişleri engelliyoruz. RGB kare farkları toplamını baz alarak bu toleransı belirledim.

Yumuşak Geçiş (Lerp):

Renkler arasında anlık sıçramalar yerine, doğrusal geçiş (lerp) formülü kullanılarak zaman içinde akıcı bir şekilde yeni renge geçiş sağlanıyor. Bu da göz konforunu önemli ölçüde artırıyor.

Sonuç
Philips seviyesi olmasa da elimdeki donanımla, ekran renklerini yumuşak geçişlerle takip eden, ani değişimlerden uzak ve oldukça kararlı bir screen Sync ambilight sistemi kurmuş oldum. Üstelik yüksek CPU kullanımı gibi bir derdim de kalmadı.

1750884577108.webp