Evet fotoğraf. Çocukluk fotoğrafınız, lise yıllığındaki fotoğrafınız... :) Ancak OLED, yalnızca monochrome desteklemekte. Fakat renkli ya da renksiz fotoğraflarımızı da, OLED için uygun formata dönüştürebiliriz. Elbette bu dönüşüm sonrasında, OLED üzerinde gördüğünüz şeyi ne kadar kendinize benzetebilirsiniz orası da muamma. Bu yüzden bu yapacağımız işlem, siyah beyaz ya da siyah beyaza yakın resimlerde daha gerçekçi sonuçlar üretmekte.

Öncelikle eğer U8GLib ile başlangıç uygulamasını yapmadıysanız, önce Merhaba Dünya
uygulamasına bir göz atın, daha sonra buraya dönün.

Gerekli uygulamalar:

  • Paint : Normal paint
  • Paint.NET : monochrome çevrimi için kullanacağız.
  • imagen: fotoğrafı 128*64'e dönüştürmek için
  • LCDAsistant: monochrome fotoğrafı OLED'in anlayacağı koda dönüştürmek için

Elbette bu işlemler için kendi kullandığınız uygulamaları da kullanmaya devam edebilirsiniz.

Dediğim gibi her türlü fotoğraf kullanılabilir ancak elbette ayrıntısı düşük, siyah beyaz fotoğraflar çok daha güzel sonuçlar veriyor. Ben siyah beyaz imza fotoğrafını seçtim.

Öncelikle fotoğrafımız eğer 2x1 ebatlarında değilse, (örneğin 720360, 412206, 1500*750 vs.) fotoğrafı bu boyutlara çekelim. Seçtiğim fotoğraf 640x360 boyutlarına sahip. Benim bunu ya 640x320 ya da 720x360'a çekmem lazım öncelikle. Normal paint'i kullanarak fotoğrafımı 720x360 boyutlarına çektim.

Atatürk imza
Atatürk'ün imzası 640x360 (2x1 oranında değil)

Şimdi de imagen kullanarak 720x360'lık fotoğrafı OLED'in boyutlarına yani 128x64'e çekelim. Imagen üzerine sağ tıklayalım ve Image>Resize>Change Size menüsünde Other kısmına 128x64'ü girelim ve yeni fotoğrafı kaydedelim.

Imagen
Imagen change size menüsü

Imagen
Imagen change size menüsü

Seçtiğim resim siyah beyaz olsa da aslında halen monochrome değil. Paint.net'i açalım ve Adjustments>Brightness/Contrast>a tıklayalım. Çıkan menüde Brightness = 0 ve Contrast=100 atayalım ve resmi BMP olarak kaydedelim. Burası çok önemli. Eğer bitmap değil de jpg, png ya da diğer biçimleri seçersek ekranda istediğimiz sonuçları göremeyeceğiz. Bitmap olarak kaydettikten sonra Paint.NET'i kapatabiliriz.

Paint.net
Brightness'ı 0, contrast'ı ise 100 olarak ayarlıyoruz

Bir sonraki adımımızda LCDAsistant'ı açalım ve kaydettiğimiz bmp dosyasını seçelim. Byte Orientation kısmında "Horizontal" seçimini yapmak önemli, aksi taktirde fotoğraf ekranda bozuk olarak basılacaktır. Save output komutuyla dosyamızı txt biçimiyle kaydedelim ve bu kodu kopyalayalım ilgili değişkene yapıştıralım.

LCD asistant - Horizontal seçimi önemli

#include "U8glib.h"


U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);	// I2C / TWI 

const uint8_t ATATURK[] U8G_PROGMEM =  {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x24, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x30, 0x60, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xC0, 0x24, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x48, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x01, 0x48, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x50, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0xC0, 0x02, 0x50, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x80, 0x04, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x80, 0x21, 0xCC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC0, 0x80, 0x69, 0x82, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x80, 0x31, 0x81, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x01, 0x02, 0x31, 0x00, 0x40, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x98, 0x01, 0x12, 0x21, 0x00, 0x20, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x01, 0xE0, 0x01, 0x34, 0x20, 0x00, 0x18, 0x00, 0x00,
0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3A, 0x03, 0x80, 0x02, 0x24, 0x00, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x0C, 0x02, 0x00, 0x00, 0x61, 0x47, 0x00, 0x02, 0x66, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0xC3, 0x8F, 0x07, 0x02, 0xB0, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x18, 0x04, 0x00, 0x01, 0x83, 0xAE, 0x04, 0x84, 0x30, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x30, 0x08, 0x00, 0x03, 0x03, 0x0A, 0x09, 0x83, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x20, 0x08, 0x00, 0x02, 0x03, 0x02, 0x19, 0x02, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x00, 0x60, 0x10, 0x00, 0x04, 0x07, 0x14, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x00, 0x40, 0x20, 0x00, 0x08, 0x06, 0x04, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x00, 0xC0, 0x40, 0x00, 0x18, 0x0E, 0x24, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x00, 0x80, 0x80, 0x00, 0x30, 0x0E, 0x0C, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x01, 0x81, 0x00, 0x00, 0x20, 0x1C, 0x48, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x01, 0x02, 0x00, 0x00, 0x60, 0x14, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x03, 0x06, 0x00, 0x00, 0x40, 0x34, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
0x00, 0x06, 0x0C, 0x00, 0x00, 0x40, 0x29, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x07, 0xFF, 0x00, 0x00, 0x80, 0x69, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x1C, 0x30, 0xC0, 0x00, 0x80, 0x42, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x68, 0xC0, 0x20, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
0x00, 0x99, 0x80, 0x10, 0x01, 0x01, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
0x01, 0x1E, 0x00, 0x08, 0x01, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x02, 0x38, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
0x01, 0xE0, 0x00, 0x04, 0x43, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x40, 0x00, 0x04, 0xC2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x80, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x02, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
0x02, 0x00, 0x00, 0x02, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x10, 0x18, 0x00, 0x00, 0x00, 0x30, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x11, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

void drawBitmap() {
  u8g.drawBitmapP( 0, 0, 16, 64, ATATURK);
}

void setup(void) {
  
}

void loop(void) {
  u8g.firstPage();
  int i = 0;
  do {
    drawBitmap();
  } while( u8g.nextPage() );
  
  delay(1000);
}

Sonuçlar harika:

Atatürk
Atatürk'ün imzası
Türkiye haritası
Türkiye Haritası
Dünya haritası
Dünya haritası