Bu yazımızda, Arduino Nokia 5110 LCD kullanımını anlatıyoruz. Nokia’nın emektar telefonlarından 5110’un LCD ekranını kurcalayan bir Maker, bu ekranın Arduino gibi mikroişlemcili geliştirme kartlarına kolay bir şekilde bağlanabileceğini keşfetmesi ile bu yolculuk başlıyor.
Bu ekranın beyni ve kalbi Philips tarafından yapılan tek çekirdekli PCD8544 CMOS LCD sürücüsüdür. Bu sürücü 84×84 piksel olan her hangi bir ekranı kontrol edebilmektedir. Mikroişlemcilere SPI iletişim yolu ile bağlanmaktadır.

5110 LCD Özellikleri
| Görüntü Teknolojisi | Nokta LCD |
| MCU Arayüzü | SPI |
| Ekran Boyutu | 1.5 inç |
| Çözünürlük | 84 × 48 piksel |
| Çalışma Gerilimi | 2.7V – 3.3V |
| Çalışma Akımı | Maksimum 50mA |
| Görüş Açısı | 180 ° |
5110 LCD Bellek Yönetimi
PCD8544 LCD sürücüsünde, yansıtılacak bit motifini tutan ekran için yerleşik 504 bayt Grafik Görüntü Veri RAM’i (GDDRAM) bulunmaktadır. Bu hafıza alanı 6 bölüm olarak ayarlanmıştır. Her bölüm 84 sütun içerir. Ve her sütun 8 bit veri bulundurabilir.
İpucu
PCD8544, LCD ekran için yerleşik bir GDDRAM‘a sahip olmasına karşın, bellek içeriğini okuyamıyoruz. Ayrıca verileri okumak için ekran ara belleğini değiştirmekte pek olanaklı değildir.
İpucu olarak, kütüphane ATmega328P’den tampon olarak 504 bayt bellek ayırıyor. Böylece, ekran ara belleğini değiştirebilir ve daha sonra ATmega328P ‘nin belleğinden PCD8544 denetleyicisinin dahili belleğine toplu bir aktarım gerçekleştirebilirsiniz.
5110 LCD Pin Şeması

Reset(1): Ekranı sıfırlamak için kullanılır doğrudan Arduino’ya bağlarsanız kod yüklerken veya yenilerken otomatik sıfırlama yapılabilir.
CE: “Chip Enable” SPI veri yolu kullanılırken birden fazla cihaz arasından doğru cihazı seçmek için kullanılır.
DC: “Data Command” alınan veri veya komutun görüntülenip, görüntülenmemesi gösterir.
Din: “Data in” seri veri pini.
CLK: “Serial Clock” seri saat pini
Vcc: 3.3V girişi.
BL: Arka ekran ışığını kontrol etmek için kullanılır, Arduino PWM ya da potansiyometre ile kontrol edebilirsiniz.
GND: “Ground” Negatif girişi.
PCD8544 Kütüphanesi
PCD8544 LED sürücüsü kullanıma ne kadar açık olsada, tam anlamıyla kullanmak için bellek adresleme alanında yeterli bilgiye sahip olmak gerekiyor. Fakat PCD8544 kütüphanesi ile daha hızlı ve basit bir şekilde kontrol sağlayabilirsiniz. Bu yazımızda kullandığımız tüm kodlar bu kütüphane ile hazırlanmıştır.
Eğer indirip, klasöre atmakla uğraşmak istemiyorsanız, Arduino IDE’si üzerinden kütüphane yönetimi ile ekleyebilirsiniz.

Arduino Nokia 5110 LCD Devre Şeması
Sadece test yapmak için kullanmayı planlıyorsanız, bu şekilde kullanabilirsiniz fakat uzun süreli kullanımlar için GND,VCC,BL,CE pini hariç tüm pinlere 10k ohm, CE pinine 1k ohm direnç bağlamanız gerekiyor, bu sayede fazla akımı sınırlamış olursunuz.

Arduino Kodu
Kodu yüklemeden önce kütüphanenin yüklü olduğundan, portların seçili olduğundan ve bağlantıların yapıldığından emin olun.

Meraklılar İçin Kütüphanenin Örnekleri
Metin Görüntüleme
setTextSize(): Metin font boyutunu ayarlamak için kullanılır.
setTextColor(): Yazı rengini ayarlamak için kullanılır, koyu arka planı için
BLACK
, parlak arkaplan için
WHITE
yazmak gerekiyor
setCursor(X,Y): Piksellerin başlayacağı koordinatlar.
print(” “): ve println(” “): Metni ekrana yazdırmak için.
display(): Bellekteki verileri ekrana yazdırmak için kullanılır.
Renkleri Ters Çevrilmiş Metin
Ters çevrilmiş metni görüntülemek için setTextColor(FontColor,BackgroundColor) işlevini çağırmak gerekiyor. Daha önce yalnızca bir parametre çağırdığımızı görebilirsiniz. Ancak şimdi iki parametre çağırıyoruz. Bu, Function overloading adı verilen olayla yapılmaktadır. İşlev aşırı yüklenmesi olarak bilinen bu olay, aynı isimde ancak farklı parametre kümesiyle birden çok işlev oluşturma işidir. Aşırı yüklenmiş bir işleve yapılan çağrılar, geçirilen parametrelere bağlı olarak bu işlevin belirli bir uygulamasını çalıştırır.
Bu kodda geçen setTextColor(BLACK, WHITE) kodu, dolu arka plan üzerinde siyah metin oluşturacaktır.
Renkleri Tersine Çevirme
Yazı Tipi Boyutu
Makalenin başlarında, setTextSize() yazı tipi boyutunu ayarlamak için bu fonksiyonu çağırdık ve parametre olarak 1’i seçtik. Negatif olmayan bir tam sayı girerek yazı tipini ölçeklendirmek için bu işlevi kullanabilirsiniz.
Örnek Olarak:
Yazı fontunu 1 seçerseniz karakterler 5×7 formatında oluşturulur, eğer 2 seçerseniz 10×14 formatında oluşturulur.
İpucu
Adafruit_GFX kütüphanesi yazı tipini oluşturan fonksiyonlara sahiptir. Varsayılan olarak tek aralıklı ve tek format yazı tipi seçilidir. Ancak, Adafruit GFX kütüphanesinin yeni sürümleri alternatif yazı tiplerini kullanma şansı sunar. Kütüphaneyle birlikte birkaç alternatif yazı tipi gelir, ayrıca yenilerini ekleme özelliği vardır.
Rakamları Görüntüleme
Rakamlar LCD ekranda sadece print() veya println() fonksiyonu ile görüntülenebilir. Bu işlevlerin aşırı yüklenmiş bir uygulaması 32 bit işaretsiz int olarak kabul eder, bu nedenle yalnızca 0 ile 2^32=4,294,967,295 arasındaki sayıları görüntüleyebilirsiniz.
Sayılar için Taban Belirtme
print() ve println() işlevlerinde, kullanılacak tabanı (format) belirten isteğe bağlı ikinci bir parametre bulunur; izin verilen değerler BIN (ikili veya taban 2), OCT (sekizli veya taban 8), DEC (ondalık veya taban 10), HEX (onaltılık veya taban 16) ‘dır.
Örneğin:
- print (78, BIN) “1001110” verir
- print (78, OCT) “116” verir
- print (78, DEC) “78” verir
- print (78, HEX) “4E” verir
- println (1.23456, 0) “1” verir
- println (1.23456, 2) “1.23” verir
- println (1.23456, 4) “1.2346” verir
ASCII Sembollerini Görüntüleme
print() ve println() fonksiyonları ekrana insan tarafından okunabilen ASCII metni olarak veri gönderirken, write() fonksiyonu ekrana ikili veri gönderir. Bu nedenle, ASCII sembollerini görüntülemek için bu işlevi kullanabilirsiniz. 3 numaralı örnek kütüphanede kalp sembolüne denk gelmektedir.
Metin(Yazı) Döndürme
0 – Ekranı standart yatay yönde tutar.
1 – Ekranı 90 ° sağa döndürür.
2 – Ekranı ters çevirir.
3 – Ekranı 90 ° sola döndürür.
Geometrik Şekiller
Dikdörtgen Çizimi
Yuvarlak Kenarlı Dikdörtgen Çizim
Çember, Daire, Yuvarlak
Üçgen Çizimi
BITMAP Oluşturmak
5150 LCD ekranda resim gibi dosyaları göstermek için elimizde olan görselleri bitmap formatına çevirmemiz gerekiyor. Bu çevirmeyi isterseniz LCD Assistant üzerinden isterseniz internetten image2cpp
üzerinden yapabilirsiniz.
image2cpp Kullanımı
Resminizi bir diziye dönüştürebilen image2cpp adlı çevrimiçi bir uygulama var. Image2cpp, LCD Asistan’dan daha yeni ve daha kullanışlıdır. Her hangi bir resmi çevirmek için siteyi açın ve istediğiniz görseli seçin;

Görüntünüzün boyutları, Görüntü ayarları altındaki Tuval boyutu kısmında bulunur. Görüntüyü 84 × 48 olarak değiştirin ve uygun Ölçeklendirme seçeneğini işaretleyin.
Son olarak, en önemli seçeneği değiştirin (Brightness threshold). Eşiğin ayarlanması bu seviyenin üstündeki pikselleri beyaz ve siyahın altındaki pikselleri yapar. Detayların belirgin olması için 171 değerini öneriyoruz.

Önizleme kısmı ayarlarınızda yaptığınız değişiklikleri yansıtır. Ayarları göz önünde tutarak değiştirebilirsiniz.

Sonuçtan memnun kaldığınızda, veri dizisini oluşturmaya devam edebilirsiniz. Arduino Kodu olarak çıkış formatını seçin ve Kod oluştur butonuna tıklayın.

Çıktıyı doğrudan örnek kodumuzla kullanabilirsiniz. Sadece uygun şekilde çağırdığınızdan emin olun. Ardından diziyi drawBitmap() fonksiyonu içinde çağırın.

LCD Assistant Kullanımı
Aşağıdaki ayarları birebir yaparak bu şekilde kullanabilirsiniz, görseli seçtikten sonra çıktı olarak .c dosyası olarak kaydedin, kaydettiğiniz .c dosyasını Arduino projenizin klasörüne atıp doğrudan ekleyebilirsiniz.

Hızlı Kontrol Listesi
- Besleme gerilimini 3.3V sınırında doğrulayın; 5V ile doğrudan sürmeyin.
- SPI pin eşleşmesini kod ve bağlantı şemasıyla birebir kontrol edin.
- Gist örneklerini tek tek deneyip her adımda ekran güncellemesini test edin.
- Ek referans için Adafruit’in resmi kullanım notları: Nokia 5110 LCD guide.
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.

