Arduino I2C OLED Ekran Kullanımı
Standart LCD modülünü kullanmak hoşunuza gitmiş miydi? I2C OLED modülü ile tanışınca LCD modülünden vazgeçeceğinize eminiz! Daha önce bir kaç yazımızda tek renk LCD modülünü kullanmış, hatta LCD ekran ile bir menü oluşturmuştuk, buradan o yazıya erişebilirsiniz. Şimdi ise teknoloji olarak ileri bir seviyeye gidiyoruz ve OLED ekran kullanıyoruz! Ayrıca OLED ve LCD ekranları bir birinden ayıran en önemli faktörün, backlight yani arka ışık olduğunu belirtelim. LCD ekranlarda arka ışığa ihtiyaç varken, OLED ekranlarda bu arka ışığa gerek duyulmaz.
OLED Teknolojisi Nedir?
OLED ekranlar tıpkı LED ekranlar gibi yarı katı iletkenlerdir. OLED ekranlar elektrik uygulandığında ışığı emen organik malzemelerden yapılmıştır. OLED’ler 2 ya da 3 ana organik katman sahip olabilir ve üçüncü katman bulunduğunda bu katman katottan ışık yayan tabakaya yani bir anot tabakaya elektron taşınmasına aracılık eder. Ayrıca bu teknolojinin gelişmesinde, Nanoteknolojinin payı oldukça büyüktür.
I2C Nedir?
Daha önce ki yazılarımızdan biri olan “Seri Haberleşme Protokolleri” konusunun en göz alıcı başlığı olmasıyla beraber I2C protokolü, pin sayısının az olduğu durumlarda oldukça kullanışlı bir yöntem oluyor. İletişim için sadece iki pine ihtiyaç duyması bunun yanında paralel olarak birden fazla I2C modülünün bir birine bağlanabilmesi bir çok kişi tarafından ilk seçenek olarak tercih ediliyor. Daha fazla bilgi almak için buradan devam edebilirsiniz. Ya da Arduino ile I2C kullanımını anlattığımız bu yazıya bakabilirsiniz.
Uygun OLED Modülünü Seçmek
Tamamen istekleriniz doğrultusunda karar vermelisiniz. Genel olarak modüller arasında fiyar farkının en büyük sebebi renk faktörüdür, boyut olarak aradaki fiyat çok küçük miktarlarda değişmekte. Biz bu yazıda tek renk(monochrome) 0.96″ lik bir OLED ekran kullanacağız. Kullandığız modülün boyutlarına göre projenin kodunda değişiklikler yapmak zorundasınız, bunun yanında haricen bir şey yapmanıza gerek yok, I2C protokolünü sizin için her şeyi yapmaya zaten hazır!
Bazı OLED modelleri tek renki bir ekrana ya da çok renkli bir ekrana sahip olmasının yanında, çift renkli modeller ile de karşılaşmaktayız, bu modellerde ekranın üst kısmının bir bölümü alt kısma göre farklı bir renkte. Üstte verdiğimiz 1.3″ lik ekran bu projede kullandığımız ekran modeli, fakat bizim ekranımız “monochrome” yani tek renkli.
Kütüphaneye Karar Vermek
Kullandığınız mikroişlemcinin ya da Arduino’nun programlama belleğine göre bir kütüphane seçmekte fayda var. Ayrıca bazı OLED modülleri her kütüphane ile çalışmamakta, bizim modülümüz burada göstereceğimiz iki kütüphane ile sorunsuz çalıştı. Adafruit kütüphanesi ile yaptığımız kod 19kb olmasına karşın u8glib kütüphanesinde hazırladığımız kod sadece 7kb oldu.
Adafruit Kütüphanesi
U8glib kütüphanesine göre oldukça gelişmiş ve kullanıcı dostu bir içeriğe sahip. Kurulum anında farklı olarak bir de Adafruit OLED GFX kütüphanesi kurarak projenize hareketli desenler, resimler, gifler, ve tasarım harikaları ekleyebilirsiniz. Kolay bitmap düzenlemeleri ile var olmayan sembolleri, UTF kodlarını kolaylık ekleyebilirsiniz. Eksi yönü ise oldukça fazla bir alan kaplaması, bu yüzden ATmega/ATtiny mikroişlemcilerinin 8 yada 16 serisini kullanıyorsanız biraz zorlanacak gibisiniz çünkü en basit “Hello World” projesi bile neredeyse 15kB yer kaplamakta. Kütüphane ve font dosyalarından oynama yapsanız bile verimli bir yer kazancı olmuyor.
U8glib Kütüphanesi
Adafruit kütüphanesi göre oldukça karmaşık ve biraz daha mantık gerektiren bir çalışma prensibine sahip. Bu kütüphane ile grafikler ve sanatsal! içerikler üretmek biraz zor, fakat artı yanı olarak zengin font ailesine sahip, ayrıca düşük yer kaplaması ile tercih ettiğimiz bir kütüphane. Basit bir “Hello World” çalışması için kaplanan yer neredeyse 5kB ! Fakat bu veri seçtiğiniz fonta göre değişiyor, bu yüzden font ailesinden bir font tercih ederken, boyut ve kaplanan yeri göz önüne almanız gerekiyor. Aynı işlevleri gören ve aynı fonksiyonlara sahip olan bir projede iki kütüphane arasında 6kB kadar fark oluşuyor. Bunun yanında, ekrandaki verileri değiştirmek, Adafruit kadar kolay değil, çünkü sayfa metoduna göre çalışıyor. Bunu şöyle düşünebilirsiniz;
- Adafruit tek sayfadan oluşan bir defter ve her işlemde defter silinip tekrar yazılıyor.
- U8glib ise bir çok sayfadan oluşan bir defter ve her işlemde sayfalar arasında geçiş yapılıyor.
I2C Adresini Tespit Etmek
I2C iletişim kanalını kullanmak için cihazın adresini kesinlikle bilmemiz gerekiyor. Neyseki bu adresi tespit etmek oldukça kolay, bağlantıları doğru bir şekilde yaptığınız taktirde yaklaşık 10 saniye gibi bir sürede yazılımsal olarak tespiti sağlayabilirsiniz.
Yazılımsal Tespit
İnternet üzerinde belkide yüzlerce I2C-Scanner isminde “Serial Monitor” kullanarak modülünüzün I2C adresini bulmanızı sağlayan kodlar var. Biz sizilerle I2C kullandığımız bütün projelerde tercih ettiğimiz kodu paylaşacağız, eğer bağlantılarınız doğru olmasına rağmen her hangi bir adres tespit edilemiyorsa ya da ekran boş kalıyorsa, farklı bir I2C Scanner kullanmanız gerekiyor olabilir, fakat yüksek ihtimalle; ya modülünüz bozuk ya da I2C bağlantılarınız yanlış. Bazı MCU’larda I2C bağlantı noktalarında pull-up direnç bulunmamakta, eğer böyle bir sorunla karşı karşıya kalırsanız 4.7k Ohm’luk bir pull-up direnç işinizi görecektir.
Ayrıca bu tarama için Adafruit I2C Kütüphanesine ihtiyacımız var. Doğrudan Arduino IDE üzerinden kurabileceğiniz gibi buradan github bağlantısı ile indirebilirsiniz.
#include <Adafruit_I2CDevice.h> Adafruit_I2CDevice i2c_dev = Adafruit_I2CDevice(0x10); void setup() { while (!Serial) { delay(10); } Serial.begin(115200); Serial.println("I2C adres taraması > devreyakan.com"); if (!i2c_dev.begin()) { Serial.print("0x Noktasında her hangi bir baglanti mevcut degil"); Serial.println(i2c_dev.address(), HEX); while (1); } Serial.print("Cihaz bulundu... "); Serial.println(i2c_dev.address(), HEX); } void loop() { }
Donanımsal Tespit
Yüksek ihtimalle modülünüzün arka kısmında I2C adresi seçmenize olanak sağlayan iki adet direnç bulunmakta, lehimli olan bağlantı kısmı o an seçili olan adres anlamına gelmekte. Aynı anda iki kısmıda lehimlerseniz, modülünüz çalışmayacaktır, iki kısmıda boş bırakırsanız modülünüz az önceki işlem gibi yine çalışmayacaktır.
Yukarıda gördüğünüz gibi 0x78 ve 0x7A olmak üzere seçim şansınız var. Bizim modülümüzde burada direnç 0x78’e bağlı olmasına rağmen, yazılımsal olarak aramada adres 0x3C çıktı, bizde bu doğrultuda 0x3C adresini kullandık ve başarılı sonuçlar elde etmiş olduk.
Devre Şeması
Bu bağlantılar Arduino Uno/ATmega328-P için geçerlidir. Bir çok ATmel kartların bağlantısı aynı olsada, bağlantıları sağlamadan önce kartınızın pin çıkışlarını mutlaka kontrol edin.
Pin | Arduino Uno |
Vin | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
Diğer Arduino modellerinde;
- Nano: SDA (A4); SCL (A5);
- MEGA: SDA (20); SCL (21);
- Leonardo: SDA (20); SCL (21);
Proje Kodu
İki farklı kütüphane için de kodları paylaşıyoruz, ayrıca U8glib için adres otomatik olarak 0x3C olarak geliyor, bir çok OLED ekran bu adrese sahip olduğu için bu değeri değiştirmeye gerek kalmadık fakat isterseniz bunu kolaylıkla değiştirebilirsiniz. Ayrıca, Adafruit kütüphanesini kullanırken mutlaka değiştirmeniz gereken bir kaç değer var, bu değerleri değiştirmediğiniz taktirde OLED ekran çalışmayacaktır.
Adafruit Kütüphanesi İle
Öncelikle Arduino IDE’ye SSD1306 ve GFX yazarak bu kütüphaneleri kuruyoruz;
Örnekler sekmesinden kartınıza uygun olan örneği seçerek ilk testi yapabilirsiniz.
Adafruit ile Hello World Uygulaması
#include <Wire.h> #include <Adafruit_GFX.h> // grafik tabanli projeler icin #include <Adafruit_SSD1306.h> // metin tabanli projeler icin #define SCREEN_WIDTH 128 // genislik #define SCREEN_HEIGHT 64 // yukseklik // sda-scl pinleri Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); void setup() { Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // i2c adresi Serial.println(F("SSD1306 baglanti prob")); for(;;); } delay(2000); display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 10); display.println("merhaba dunya!"); display.display(); } void loop() { }
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
-1 yazan bölüm OLED ekranın reset pinidir, eğer ekranınızda reset pini yoksa bu değer kesinlikle -1 olmalı. Eğer reset pini varsa, kart üzerinden tanımdalığınız çıkışı buraya bağlamanız gerekiyor.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Yükselik ve genişlik kesinlikle doğru yazılmalı aksi taktirde görüntüde kopmalar yaşanacaktır.
Adafruit Özelleştirmeler
Ekranı Temizleme
display.clearDisplay();
Metin Punto Ayarı
display.setTextSize(1);
İlk Karakterin Başlangıç Yeri
display.setCursor(0,10);
Veriyi Ekrana Yollamak
display.display();
Her hangi bir değişiklikten sonra display kodunu kullanmazsanız, ekran yenilenmez.
Font Değiştirmek
display.setFont();
Font Listesi
FreeMono12pt7b.h FreeSansBoldOblique12pt7b.h FreeMono18pt7b.h FreeSansBoldOblique18pt7b.h FreeMono24pt7b.h FreeSansBoldOblique24pt7b.h FreeMono9pt7b.h FreeSansBoldOblique9pt7b.h FreeMonoBold12pt7b.h FreeSansOblique12pt7b.h FreeMonoBold18pt7b.h FreeSansOblique18pt7b.h FreeMonoBold24pt7b.h FreeSansOblique24pt7b.h FreeMonoBold9pt7b.h FreeSansOblique9pt7b.h FreeMonoBoldOblique12pt7b.h FreeSerif12pt7b.h FreeMonoBoldOblique18pt7b.h FreeSerif18pt7b.h FreeMonoBoldOblique24pt7b.h FreeSerif24pt7b.h FreeMonoBoldOblique9pt7b.h FreeSerif9pt7b.h FreeMonoOblique12pt7b.h FreeSerifBold12pt7b.h FreeMonoOblique18pt7b.h FreeSerifBold18pt7b.h FreeMonoOblique24pt7b.h FreeSerifBold24pt7b.h FreeMonoOblique9pt7b.h FreeSerifBold9pt7b.h FreeSans12pt7b.h FreeSerifBoldItalic12pt7b.h FreeSans18pt7b.h FreeSerifBoldItalic18pt7b.h FreeSans24pt7b.h FreeSerifBoldItalic24pt7b.h FreeSans9pt7b.h FreeSerifBoldItalic9pt7b.h FreeSansBold12pt7b.h FreeSerifItalic12pt7b.h FreeSansBold18pt7b.h FreeSerifItalic18pt7b.h FreeSansBold24pt7b.h FreeSerifItalic24pt7b.h FreeSansBold9pt7b.h FreeSerifItalic9pt7b.h
Pixel Çizmek
display.drawPixel(64, 32, WHITE);
x=64 y=32 olmak üzere pixel oluşturur.
Düz Çizgi Çizmek
display.drawLine(0, 0, 127, 20, WHITE);
x1=0 x2=0 y1=127 y2=20 olmak üzere düz çizgi oluşturur.
Dikdörtgen Çizmek
display.drawRect(10, 10, 50, 30, WHITE);
x=10 y=10 genişlik=10 yükseklik=10 olmak üzere dikdörtgen oluşturur.
Çember Çizmek
display.drawCircle(64, 32, 10, WHITE);
x=64 y=32 yarıçap=10 olmak üzere çember oluşturmak için.
Renkleri Tersine Çevirmek
display.invertDisplay(true);
Ekranın renklerini tersine çevirmek için kullanılır.
U8glib Kütüphanesi İle
Adafruit kütüphanesinin aksine daha modüler ve daha az yer kapladığı için biz bu projede bu kütüphaneyi tercih ettik. Bağlantılar tamamen aynı bu yüzden doğrudan kod kısmına geçebiliriz. Ayrıca eğer bu kod ile OLED modülü çalışmazsa, bağlantılardanda eminseniz, kütüphanenin örnek dosyalarındaki çalışmaları tek tek deneyerek çalışan model numarasını bulabilirsiniz. Örneğin bizim kartımızda çalışan model ayarları;
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI //U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC
Hello World Kodu
#include "U8glib.h" U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI void sayfaYazdir() { u8g.setFont(u8g_font_unifont); u8g.drawStr( 0, 22, "devreyakan.com"); } void setup(void) { } void loop(void) { // picture loop u8g.firstPage(); int i = 0; do { sayfaYazdir(); } while( u8g.nextPage() ); delay(1000); }
Birden Fazla Sayfa Örneği
#include "U8glib.h" #include U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); void sayfa1(); void sayfa2(); void sayfa3(); void sayfa4(); const int sayfaSayisi = 4; int p; void (*sayfalar[sayfaSayisi])() = { sayfa1, sayfaS2, sayfa3, sayfa4 }; int sure [sayfaSayisi] = { 1000, 1000, 1000, 2000 }; void setup() { u8g.setFont(u8g_font_unifont); u8g.setColorIndex(1); p = 0; Serial.begin(9600); } void loop() { u8g.firstPage(); do { (*sayfalar[p])(); } while( u8g.nextPage() ); delay(sure[p]); p = p+1; if (p == sayfaSayisi) p=0; } void sayfa1() { Serial.write("sayfa1"); Serial.println(); u8g.drawStr( 0, 15, "sayfa1"); return 0; } void sayfaS2(){ Serial.write("sayfa2"); Serial.println(); u8g.drawStr( 0, 15, "sayfa2"); return 0; } void sayfa3() { Serial.write("sayfa3"); Serial.println(); u8g.drawStr( 0, 15, "sayfa3"); return 0; } void sayfa4(){ Serial.write("sayfa4"); Serial.println(); u8g.drawStr( 0, 15, "sayfa4"); return 0; }
Bu kodu kullanırken loop döngüsüne dikkat etmeniz gerekiyor, Arduino’nun kendi loop döngüsü ile U8glib kütüphanesinin loop döngüsü bir birinden farklı, bu yüzden global eylemleri Arduino’nun loop döngüsünde kullanmanız gerekiyor, aksi taktirde verimli bir program elde edemezsiniz.
Olası Problemler
Bu modülü keşfederken karşılaştığımız bütün sorunları ve çözümlerini burada anlattık;
I2C Adresini Bulamamak
Yüksek ihtimalle bağlantılarınızda bir hata var, buna rağmen adres bulunmuyorsa i2c kanalına pull-up direnci bağlamalısınız örneğin 4.7k işinizi görecektir. Hala sonuç alamadıysanız, OLED modülünüzün adres seçme direncine ve lehimlerini dikkatlice inceleyin, bazen lehimlenmeyen yollar bu soruna yol açabiliyor.
Görüntüde Dalgalanma
Bağlantılar ve kod doğru olmasına rağmen böyle bir sorun varsa, geliştirme kartınız yüksek ihtimalle klon bir karttır. Genelde voltaj ve akımdan kaynaklanan bu sorunlar klon kartlarda meydana gelir, oled ekranın GND ve VCC bağlantılarına yakın bir konuma paralel 100nF’lık bir kapasitör bu sorunu yüksek ihtimalle çözecektir. Bunun yanında çözünürlük ayarlarınız yanlış olabilir, tekrar gözden geçirmekte fayda var.
Siyah Ekran Problemi
Genel olarak en sık rastlanan problemlerden biridir. Başlıca sebebi yanlış I2C adresi veya bağlantılardan kaynaklanır. Sırasıyla, önce bağlantılar sonra I2C adresi kontrol edilip tekrar denenir. I2C adresini, yazılımsal yolla bulmayı şiddetle tavsiye ediyoruz, çünkü bizim kullandığımız modülde de böyle bir problem mevcuttu, karta farklı bir I2C adresi basılmıştı.
Parazitlenme
Bu sorunun sebebide genel olarak dalgalanma ile aynı, bağlantılar ve kod doğru olmasına rağmen böyle bir şey meydana geliyorsa, kütüphane değiştirip tekrar deneyin, sorun devam ediyorsa, OLED modülünüz hasar almış demektir.
EKSTRALAR
Konuya ek, sizlerede fazladan bilgi olması maksadıyla ekstra olaylar ve fonksiyonlar;
I2C Adresini Değiştirmek
OLED Modülün arkasında bulunan I2C adress bölümündeki direnci yer değiştirirek, adresi değiştirebilirsiniz. İki kısmada direnç bağlarsanız modül çalışmaz, ayrıca iki kısmıda boş bırakırsanız modül yine çalışmaz.
I2C Pinlerini Değiştirmek (Tercihe Bağlı)
Arduino Uno modelinde I2C pinleri donanımsal olarak sabit geliyor, kısacası ek bir kütüphane olmadan orjinal I2C pinleri değiştirmek imkansıza yakın. Bir proje yaptığınızı düşünün bu projde tüm analog çıkışlar kullanıyor, bu yüzden I2C hattını kullanmak imkansız. İşte tam bu noktada “SoftwareWire” kütüphanesi yardımınıza koşacaktır.
İki Ayrı I2C Modülü Bağlamak
Master-slave kavramlarına hakimseniz, birden fazla I2C modülünü paralel bir şekilde kartınıza bağlayabilirsiniz.
Normal Resimleri Bitmap’a Çevirmek
Logonuzu, resminizi bitmap formatına çevirerek kolay bir şekilde OLED ekranına yansıtabilirsiniz;
Öncelikle resminizi monochrome bitmap şeklinde kaydetmeniz gerekiyor, bundan önce ise kırpma-kesme işlemlerini yapmanız gerekmekte.
Kırpma işlemi yaptığımız resmi her hangi bir Image to C converter programı ile C array(küme)’ına çevirelim.
LCD Image Converter Programını kullanıyorsanız;
- Type: Monochrome, Threshold Dither
- Main Scan Direction: Top to Bottom
- Line Scan Direction: Forward
ayarlarını seçmeniz gerekiyor.
Image sekmesinden ise, bu ayarları yapmanız gerekiyor;
- Split to rows
- Block size: 8 bit
- Byte order: Little-Endian
Bütün ayarları yaptıkran sonra export butonundan .c dosyası şeklinde bir çıktı alıyoruz. Çıktının içerği aşağıdaki gibidir. Bu çıktıyı her hangi bir kütüphane ile kullandığımızda bizleri en alttaki gibi bir ekran karşılamış olucak.
static const uint8_t image_data_Saraarray[1024] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x14, 0x9e, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x36, 0x3f, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x6d, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0xfb, 0xff, 0x80, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xd7, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xef, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xdf, 0xff, 0x90, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xbf, 0xff, 0xd0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1d, 0x7f, 0xff, 0xd0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x01, 0x1b, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x02, 0xa7, 0xff, 0xff, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0xff, 0x80, 0x00, 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0x07, 0xff, 0xf8, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0e, 0x01, 0xff, 0xc0, 0x38, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x1c, 0x46, 0xff, 0xb1, 0x18, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0x97, 0xff, 0xc0, 0x7a, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xbf, 0xff, 0xff, 0xff, 0xfc, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xfd, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xbf, 0xff, 0xfe, 0xff, 0xfd, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xfb, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x3f, 0xff, 0xdc, 0xff, 0xfa, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x0f, 0xf5, 0xff, 0xd7, 0xf8, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x00, 0x0f, 0xfb, 0xff, 0xff, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0xfd, 0xff, 0xdf, 0xf0, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x07, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x07, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x60, 0x00, 0x01, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x73, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xff, 0x80, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe0, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xe0, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x27, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x67, 0xff, 0xe0, 0x00, 0x00, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x40, 0x00, 0x00, 0xf3, 0xff, 0xc4, 0x00, 0x00, 0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00, 0xfc, 0xff, 0x8c, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x7f, 0x3c, 0x3c, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x7c, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff };
Sonuç olarak;
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.