OLED ekranda her piksel kendi ışığını üretir; arka aydınlatma gerekmediği için ekran ince, kontrastı yüksek ve siyahları gerçek siyahtır. Arduino projelerinde en yaygın olanı SSD1306 sürücülü 0,96 inç 128x64 piksel OLED'dir. I2C ile yalnızca 4 kabloyla (VCC, GND, SDA, SCL) bağlanır, adresi genellikle 0x3C'dir ve Adafruit SSD1306 ya da U8g2 kütüphanesiyle metin, sayı ve grafik çizilebilir. 1,3 inçlik modellerin çoğu ise SH1106 sürücü kullanır.
Küçük, keskin ve parlak bir ekran isteyen her Arduino projesi için ilk tercih genellikle 0,96 inçlik OLED ekrandır. Akıllı saatler, sensör göstergeleri, menüler ve küçük oyunlar bu ekranla kolayca yapılabilir. Bu rehberde OLED'in nasıl çalıştığını, SSD1306 ekranın Arduino'ya nasıl bağlanıp programlandığını ve sık görülen sorunları anlatıyoruz.
OLED ekran nedir?
OLED (Organic Light Emitting Diode), her pikselinde ışık yayan organik bir LED bulunan ekran teknolojisidir. LCD'den farklı olarak arka aydınlatma gerekmez: kapalı piksel tamamen siyahtır ve ışık yaymaz. Bu sayede kontrast çok yüksektir, ekran incedir ve yalnızca yanan pikseller enerji harcar. Hobi projelerindeki küçük OLED'ler genellikle tek renklidir (beyaz, mavi ya da iki renkli sarı-mavi).
OLED ekran çeşitleri
| Ekran | Çözünürlük | Sürücü (yaygın) | Not |
|---|---|---|---|
| 0,91 inç | 128x32 | SSD1306 | Çok küçük, iki-dört satır metin |
| 0,96 inç beyaz | 128x64 | SSD1306 | En yaygın model |
| 0,96 inç sarı/mavi | 128x64 | SSD1306 | Üst şerit sarı, gerisi mavi (sabit renk bölgeleri) |
| 1,3 inç | 128x64 | Çoğunlukla SH1106 | Daha büyük, okunması kolay |
Sarı/mavi ekranlar renkli değildir: ekranın üst bölümü her zaman sarı, alt bölümü her zaman mavi yanar. Sürücü çipi ekran modeline göre değişebilir; ürün bilgisini kontrol edin. Hazır SSD1306 modülü örneği: 0,96 inç I2C OLED - SSD1306.
OLED ekran Arduino'ya nasıl bağlanır?
- VCC: 3,3V ya da 5V (modüllerin çoğunda regülatör vardır; belgesini kontrol edin)
- GND: GND
- SDA: Arduino Uno'da A4, ESP32'de genellikle GPIO 21
- SCL: Arduino Uno'da A5, ESP32'de genellikle GPIO 22
Bazı modüllerde pin sırası GND-VCC-SCL-SDA, bazılarında VCC-GND-SCL-SDA'dır; VCC ile GND'yi ters bağlamak ekranı bozabilir. Pin etiketlerine mutlaka bakın.
OLED ekran adım adım nasıl programlanır?
- Kütüphaneleri kurun: "Adafruit SSD1306" ve "Adafruit GFX" kütüphanelerini yükleyin. SH1106 sürücülü ekranlar için U8g2 kütüphanesi daha uygundur.
- Ekranı tanımlayın: Adafruit_SSD1306 display(128, 64, &Wire, -1); (128x32 ekran için 64 yerine 32).
- Başlatın: display.begin(SSD1306_SWITCHCAPVCC, 0x3C); Adres 0x3C değilse I2C tarayıcıyla bulun (bazı modüllerde 0x3D).
- Çizin: display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.print("Merhaba");
- Gösterin: display.display(); çağrılmadan hiçbir şey ekrana yansımaz; tüm çizimler önce bellekte yapılır.
Ekranda sensör verisi göstermek için DHT22 ya da sıcaklık sensörü rehberlerimizdeki örneklerle birleştirebilirsiniz.
Arduino Uno'da bellek sorunu
128x64 OLED için kütüphane ekranın görüntüsünü RAM'de tutar ve bunun için yaklaşık 1 KB bellek ayırır; Arduino Uno'nun toplam RAM'i 2 KB olduğu için büyük projelerde bellek yetmeyebilir. Belirtileri: ekran başlatılamaz (begin hatası) ya da program kararsız çalışır. Çözümler: metinleri F("...") makrosuyla flash bellekte tutmak, U8g2'nin sayfa (page) modunu ya da yalnızca metin gösteren U8x8 modunu kullanmak veya daha fazla belleği olan bir karta (Mega, ESP32) geçmek. Ekranı dahili olarak taşıyan ESP32 0,96 inç OLED geliştirme kartı bu sorunu ortadan kaldırır. Kartlar arasındaki farkları Arduino Uno, Nano ve Mega rehberimizde anlattık.
OLED mi, LCD mi?
| Özellik | OLED | 16x2 LCD |
|---|---|---|
| Grafik ve simge | Evet, piksel bazında | Yalnızca karakter |
| Kontrast ve görüş açısı | Çok yüksek | Orta |
| Güneş altında | Okunması zorlaşır | İyi |
| Boyut | Küçük | Daha büyük |
| Ömür | Sabit görüntüde iz kalabilir | Uzun |
LCD kullanımı için 16x2 LCD rehberimize bakın.
Sık sorulan sorular
OLED ekran neden görüntü vermiyor?
En sık nedenler yanlış I2C adresi, SDA-SCL'nin yer değiştirmesi, display() fonksiyonunun çağrılmaması ve Arduino Uno'da yetersiz bellektir. Ekranın sürücüsü SH1106 ise SSD1306 kütüphanesi görüntüyü kaydırabilir ya da hiç göstermeyebilir.
SSD1306 ve SH1106 farkı nedir?
İkisi de 128x64 OLED sürücüsüdür ama bellek yapıları biraz farklıdır. SH1106 ile SSD1306 kütüphanesi kullanıldığında görüntü kayar ya da kenarda bozuk pikseller görünür; SH1106 için U8g2 gibi uygun bir kütüphane seçilmelidir.
OLED ekran 5V ile çalışır mı?
Modüllerin çoğunda 3,3V regülatörü bulunduğu için 5V ile beslenebilir. Regülatörsüz modüller yalnızca 3,3V ile çalışır; ürün bilgisini kontrol edin.
OLED ekranda yanık (iz) olur mu?
Aynı görüntü uzun süre ve yüksek parlaklıkta gösterilirse pikseller eşit olmayan şekilde yaşlanır ve iz kalabilir. Ekran koruyucu, parlaklığı düşürme ve kullanılmadığında ekranı kapatma ömrü uzatır.
Aynı Arduino'ya iki OLED bağlanır mı?
Adresleri farklıysa (0x3C ve 0x3D) aynı I2C hattına bağlanabilir. Aynı adresteki iki ekran için I2C çoklayıcı ya da ikinci bir I2C hattı gerekir.
Özet
- OLED'de her piksel kendi ışığını üretir; arka ışık gerekmez.
- 0,96 inç 128x64 SSD1306 en yaygın modeldir; I2C adresi genellikle 0x3C.
- Çizimler bellekte yapılır, display() ile ekrana aktarılır.
- Uno'da RAM sınırlı olduğu için U8g2 sayfa modu ya da daha güçlü kart düşünülebilir.
- 1,3 inç modellerin çoğu SH1106 kullanır.