Arduino İle I2C Oled Ekran Kullanımı Detaylı Anlatım

Bu yazımızda bir çok projede kullanılan i2c oled ekranın kullanımını öğreneceğiz. Yazımızda kullanacağımız oled ekran i2c haberleşme protokolünü kullanan 0.96 inç 128×64 piksele sahip olan bir ekrandır. Benimde projelerimde çok sık tercih ettiğim bir ekrandır.

Kullanım videosunu aşağıdan izleyebilirsiniz.

İlk olarak i2c haberleşme protokolünün ne olduğunu bilmiyorsanız aşağıdaki linkten öğrenebilirsiniz.

Eğer i2c haberleşme protokolü hakkında bilginiz varsa ilk olarak oled ekranımızı tanıyalım.

0.96 inç Oled Ekran
0.96 inç Oled Ekran

0.96 İnç I2C OLED Ekran – SSD1306 Teknik Özellikleri:

  • Arkaplan ışığı gerektirmez ürün kendinden ışıklıdır.
  • Çözünürlük: 128 * 64 piksel
  • İzleme Açısı:> 160 °
  • Yaygın platform desteği: Arduino, 51 Series, MSP430 Series, STM32 / 2, CSR IC ve benzerleriyle tam uyumludur.
  • Ultra-düşük güç tüketimi: Tam ekran aydınlıkken: 0.08W
  • Voltaj: 3V ~ 5V DC
  • Çalışma Sıcaklığı: -40⁰C – +80⁰C
  • Modül Boyutları: 27.0mm * 27.0mm * 4.1mm
  • I2C/IIC Interface, yalnızca 2 pin gerektirir.
  • Driver IC: SSD1306
  • Ürün pin sıralaması; “GND – VCC – SCL – SDA”

0.96 İnç I2C OLED Ekran Boyutları:

0.96 inç oled ekran boyutları
0.96 inç oled ekran boyutları

Oled ekranın donanım şematiğini ve üreticinin kullanımını anlattığı linke aşağıdan aşağıdan ulaşabilirsiniz.

Yazımızda Kullanılacak Malzemeler:

I2C Oled Ekran Bağlantı Şeması

Bağlantımızı aşağıdaki şemaya göre yapalım.

Arduino İle I2C Oled Ekran Bağlantı Şeması
Arduino İle I2C Oled Ekran Bağlantı Şeması

Bağlantımızı yaptıysak artık kod kısmına geçebiliriz. Oled ekranı kullanabilmek için aşağıdaki kütüphaneyi indirip kurmamız gerekmektedir. Bu kütüphane bir çok ekran çeşidini desteklemektedir. Desteklenen ekranlara aşağıdaki linkten ulaşabilirsiniz.

İlk olarak bir yazı yazdıralım.

#include "U8glib.h" // Kütüphanemizi ekliyoruz
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);	// Ekran modelimizi belirledik


void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);  // Yazı fontunu belirledik
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 12, "Arduino Destek!"); // yazının konumu x,y ve yazılacak metni belirledik
  u8g.setFont(u8g_font_osb21); // 2. metnimizin fontunu belirledik
  u8g.drawStr( 40, 50, "001"); // 2. metnimizin konumunu ve fontunu belirledik
}

void setup(void) {

}

void loop(void) {
  //  Metinlerimizi yazdırıyoruz.
  u8g.firstPage();   
  do {
    draw();
  } while( u8g.nextPage() );
  
}




Kodumuzu yüklediğiniz zaman oluşacak görüntü aşağıdaki gibidir. Sadece renk farkı olabilir oda siz alırken hangi rengi tercih ettiyseniz o yüzdendir.

I2C Oled Ekran Yazı Yazdırma
I2C Oled Ekran Yazı Yazdırma

0.96 İnç I2C Oled Ekran İle Grafik Çizimi

#include "U8glib.h" // Kütüphanemizi ekliyoruz
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);	// Ekran modelimizi belirledik


void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);  // Yazı fontunu belirledik
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 12, "Arduino Destek!"); // yazının konumu x,y ve yazılacak metni belirledik
  //u8g.setFont(u8g_font_osb21); // 2. metnimizin fontunu belirledik
  //u8g.drawStr( 40, 50, "001"); // 2. metnimizin konumunu ve fontunu belirledik

  //u8g.drawBox(0,0,64,64); // içi dolu kutu çizme sol üst (x,y), sağ alt(x,y)
  //u8g.drawFrame(5,5,64,32); // içi boş kutu çizme sol üst(x,y), sağ alt(x,y)
  //u8g.drawDisc(64,32,25); // dairenin orjini(x,y) ve yarıçapı
  //u8g.drawCircle(64,32,25); // çemberin orjin noktası(x,y) ve yarıçapı
  //u8g.drawRBox(50, 10,25,40, 10); // içi dolu kutu çiziyoruz ama köşeleri radiuslu. Sol üst(x,y),sağ alt(x,y) ve radius
  //u8g.drawStr90(30,31, " 90");  // ekranı döndürerek yazo yazdırıyor
  //u8g.drawStr180(30,31, " 180");
  //u8g.drawStr270(30,31, " 270");
  //u8g.drawLine(7, 10, 40, 55); // çizgi çizdirir.Çizginin başlangıcı(x,y) ve sonu(x,y)
  //u8g.drawHLine(5, 5, 34); // yatay çizgi çizdirir.Çizginin başlangıç noktası(x,y) ve uzunluğu
  //u8g.drawVLine(5, 5, 34); // dikey çizgi çizdirir.Çizginin başlangıç noktası(x,y) ve uzunluğu
  //u8g.drawTriangle(14,7, 45,30, 10,40); // üçgen çizdirir. Üçgenin 1. noktası(x,y),2. noktası(x,y) ve 3. noktası(x,y)
}

void setup(void) {

}

void loop(void) {
  //  Metinlerimizi yazdırıyoruz.
  u8g.firstPage();   
  do {
    draw();
  } while( u8g.nextPage() );
  
}

Dikdörtgen Çizme

u8g.drawBox(0,0,64,64); // içi dolu dikdörtgen çizme sol üst (x,y), sağ alt(x,y)

İçi Boş Dikdörtgen Çizme

u8g.drawFrame(5,5,64,32); // içi boş kutu çizme sol üst(x,y), sağ alt(x,y)

Daire Çizme

u8g.drawDisc(64,32,25); // dairenin orjini(x,y) ve yarıçapı

Çember Çizme

u8g.drawCircle(64,32,25); // çemberin orjin noktası(x,y) ve yarıçapı

Radiuslu İçi Dolu Dikdörtgen Çizme

u8g.drawRBox(50, 10,25,40, 10); // içi dolu dikdörtgen çiziyoruz ama köşeleri radiuslu. Sol üst(x,y),sağ alt(x,y) ve radius

Ekranı Döndürerek Metin Yazdırma

  u8g.drawStr90(30,31, " 90");  // ekranı döndürerek yazo yazdırıyor
  u8g.drawStr180(30,31, " 180");
  u8g.drawStr270(30,31, " 270");

Çizgi Çizdirme

u8g.drawLine(7, 10, 40, 55); // çizgi çizdirir.Çizginin başlangıcı(x,y) ve sonu(x,y)

Yatay Çizgi Çizdirme

u8g.drawHLine(5, 5, 34); // yatay çizgi çizdirir.Çizginin başlangıç noktası(x,y) ve uzunluğu

Dikey Çizgi Çizdirme

u8g.drawVLine(5, 5, 34); // dikey çizgi çizdirir.Çizginin başlangıç noktası(x,y) ve uzunluğu

Üçgen Çizdirme

u8g.drawTriangle(14,7, 45,30, 10,40); // üçgen çizdirir. Üçgenin 1. noktası(x,y),2. noktası(x,y) ve 3. noktası(x,y)

Oled ekranı kullanarak yaptığımız bir kaç proje.