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 İ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ı:

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.

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.

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 radiusEkranı 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ğuDikey Ç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.

 
			



