16x2 LCD ekranlar "hesap makinesi" gibi görünürken, OLED ekranlar "akıllı telefon" kalitesinde görüntü verir. Kendi ışığını üreten bu minik teknoloji harikasıyla yazı, şekil, hatta basit animasyonlar bile yapabiliriz.
1. OLED Teknolojisi (Organic LED)
OLED (Organik Işık Yayan Diyot) ekranlarda arka ışık yoktur. Siyah kısımlar "gerçek siyahtır" çünkü o pikseller tamamen kapalıdır. Bu da müthiş bir kontrast ve düşük güç tüketimi sağlar.
- 📏 Boyut: Genellikle 0.96 inç
- 🔳 Çözünürlük: 128x64 Piksel (Toplam 8192 nokta!)
- 🔌 Bağlantı: I2C (Sadece 4 Kablo: VCC, GND, SDA, SCL)
- ⚡ Voltaj: 3.3V veya 5V uyumlu
Bu ekranların beyni SSD1306 çipidir. Kod yazarken kullanacağımız kütüphane bu çiple konuşarak pikselleri yakıp söndürür.
2. Piksellere Hükmetmek (X, Y)
LCD ekranda "Satır/Sütun" vardı. OLED'de ise X (Yatay) ve Y (Dikey) koordinatları vardır. Sol üst köşe (0,0) noktasıdır.
3. Kurulum (Donanım ve Yazılım)
🔌 Bağlantı (Arduino UNO)
- VCC ⮕ 5V
- GND ⮕ GND
- SCL ⮕ A5 (veya SCL pini)
- SDA ⮕ A4 (veya SDA pini)
📚 Gerekli Kütüphaneler
Arduino IDE > Araçlar > Kütüphaneleri Yönet kısmından şu İKİ kütüphaneyi kurmalısınız:
Adafruit SSD1306(Ekran sürücüsü)Adafruit GFX Library(Grafik çizimleri için)
4. Yazılım (Merhaba OLED)
OLED ekranlarda önemli bir detay vardır: Tampon Bellek (Buffer). Siz kodla çizim yaptığınızda (yazı, çizgi vs.) bu önce Arduino'nun hafızasında oluşur. Ekranda görünmesi için en sonda display.display(); komutunu vermeniz ŞARTTIR. Yoksa ekran siyah kalır.
#include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> // Ekran Boyutları #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 // Reset pini yoksa -1 yazılır Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); // Ekranı Başlat (Adres genelde 0x3C olur, çalışmazsa 0x3D dene) if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("Ekran bulunamadi!")); for(;;); // Sonsuz döngüde bekle } // 1. Ekranı Temizle (Önceki logodan kurtul) display.clearDisplay(); // 2. Yazı Rengi (Beyaz) display.setTextColor(SSD1306_WHITE); // 3. Yazı Boyutu (1=Küçük, 2=Orta, 3=Büyük) display.setTextSize(1); display.setCursor(0, 0); // Sol Üst display.println("Sistem Baslatildi..."); display.setTextSize(2); // Daha büyük yazı display.setCursor(10, 20); // Biraz ortaya display.println("Merhaba!"); // 4. Şekil Çiz (Dikdörtgen) display.drawRect(5, 45, 118, 15, SSD1306_WHITE); // 5. EN ÖNEMLİ KOMUT: Ekrana Bas! display.display(); } void loop() { // Burada animasyon yapılabilir }
5. Sık Karşılaşılan Sorunlar
1. Kodun sonuna
display.display(); komutunu eklemeyi unuttunuz.
2. I2C adresi yanlıştır. Koddaki
0x3C yerine 0x3D yazıp tekrar yükleyin.
display.clearDisplay(); ile ekranı silip, sonra display.setCursor(0,0); ile imleci başa almalısınız. Yoksa eski yazıların üzerine yazar.