18
Oca
2020

Arduino ile 5110 LCD kullanımı

5110 LCD, ilk defa Nokia 5110 cep telefonları ile kullanılmış ve günümüzde Arduino uygulamalarında sıklıkla kullanılan, ucuza temin edilebilen ve kullanımı kolay bir LCD modüldür. Philips PCD8544 denetleyici ile ve SPI arayüzü ile çalışır. Yatayda 84 ve dikeyde 48 piksel çözünürlüğe sahiptir. LCD, her biri 20mA akım çeken 4 adet led aydınlatmaya sahiptir.

5110 LCD modülü üzerinde 8 adet pin bulunur. Bu pinler sırasıyla aşağıdaki şekildedir:

  • RST (Reset) pini ekranı sıfırlar. Bu pinden LOW sinyali alındığında ekran sıfırlanır.
  • CE (Chip Enable) pini aynı SPI veriyolunu paylaşan cihazlardan birini seçmek için kullanılır.
  • D/C (Data/Command) pini gelen verinin bir komut mu yoksa ekrana yazdırılacak bir veri mi olduğunu gösterir.
  • DIN (Data In) pini, LCD için seri veri pinidir.
  • CLK (Clock), SPI arayüzü için saat pinidir.
  • VCC pini, 3.3V besleme ile LCD ekrana güç sağlar.
  • BL (Back Light) pini ekranın arka ışığını kontrol eder. Bu pin Arduino’ nun PWM pinlerine  bağlanarak ekran aydınlatmasının seviyesi kontrol edilebilir.
  • GND pini toprak bağlantısıdır.

Malzemeler

  • 1 adet Arduino
  • 1 adet 5110 LCD
  • 5 adet 10K direnç
  • 1 adet 1K direnç

Bağlantı şeması

5110 LCD modülü 3,3V besleme ile çalışır. 5V ile çalışan Arduino’ nun data pinlerine 5110 LCD’ nin RST, CE, DC, DIN ve CLK pinlerini 10K direnç ile, BL pinine de 1K direnç ile bağlayarak LCD’ yi gerilim kaynaklı problemlerden korumak mümkündür.

Kaynak kod

Arduino için LCD5110_Basic.h kütüphanesini indirmek için tıklayınız.

LCD5110_Basic.h kütüphanesindeki fonksiyonların kılavuzu için tıklayınız.

#include <LCD5110_Basic.h>  
LCD5110 lcd(8,9,10,11,12); 

extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
 
void setup()
{
  lcd.InitLCD();  
}
 
void loop()
{ 
  lcd.setFont(SmallFont);  
  lcd.clrScr();  
  lcd.print("hbmacit.com", CENTER, 0);
  lcd.print("Hello World!", CENTER, 12);
  lcd.setFont(MediumNumbers);
  int sayi = 0;  
  lcd.printNumI(sayi, CENTER, 24);
}

Yukarıdaki kod çalıştığında, 5110 LCD’ de aşağıdaki görüntü elde edilecektir.

LCD’ nin Arduino’ ya bağlandığı data pinleri
LCD5110(SCK, MOSI, DC, RST, CS)
sıralamasıyla gösterilir. Kaynak kodda, lcd adında bir nesne, sırasıyla pin numaralı yazılarak
LCD5110 lcd(8,9,10,11,12)
şeklinde tanıtılmıştır.

LCD’ de gösterilecek yazı tipleri önceden programa eklenir. Karakterler için küçük yazı tipi
extern uint8_t SmallFont[]
ve rakamlar için orta boy yazı tipi
extern uint8_t MediumNumbers[]
komutları ile programa eklenir.

lcd.InitLCD()
komutu ile LCD başlatılır. Bu fonksiyona parametre gönderilerek ekran kontrastı başlangıçta  ayarlanabilir.  Örneğin;
lcd.InitLCD(50)

lcd.setFont(SmallFont) ve lcd.setFont(MediumNumbers)
komutları ile programın bundan sonrasında kullanılacak yazı tipi seçilir. Bir sonraki komut gelene kadar ekranda seçilen yazı tipi ile yazdırılır.

lcd.enableSleep()
komutu ile ekran uyku moduna alınır ve
disableSleep()
komutu ile uyku modundan çıkarılır.

lcd.clrScr()komutu ile lcd ekran temizlenir.

lcd.invert(true)
komutu ile lcd’ nin siyah pikselleri beyaz, beyaz olanlar siyah gösterilir yani görüntü ters çevrilir. lcd.invert(false)
komutu ile eski haline çevrilir.

lcd.print(metin, x_koordinat, y_koordinat)
komutu ile ekranın istenilen konumundan başlatılarak bir metin yazdırılır. x ve y koordinatları sayısal olarak girilebileceği gibi CENTER (ortala), LEFT (sola yasla) ve RIGHT (sağa yasla) parametrelerini alabilir. Yukarıdaki kaynak kodda
lcd.print("Hello World!", CENTER, 12)
komutu ile 12.satırı ortalayarak Hello World! yazılmıştır. Benzer şekilde
lcd.printNumI(sayi, x_koordinat, y_koordinat)
komutu ile tamsayı bir değişken ekrana numerik olarak yazdırılabilir.