Arduino ile LCD Uygulamaları

19.04.2019
15.490

2 satırdan, 16 sütundan oluşan ve her hücresinde bir karakter gösterimini yapabilen bu ekran, elektronik uygulamalarda en çok kullanılan LCD ekranlardandır. Piyasada bulunan LCD’ler satır ve sütun sayılarına göre isimlendirilirler. 1×8, 2×8, 1×16, 2×16, 1×20, 2×20, 1×40 ve 2×40 gibi birçok LCD ekran vardır. Biz uygulamalarımızda 2×16 LCD ekran kullanacağız.

Arduino ile LCD Uygulamaları

Merhabalar,

Bu uygulamamızda 2×16 karakter LCD ekran için LiquidCrystal kütüphanesinin fonksiyonlarını kullanarak örnekler yapmaya çalışacağız.

2×16 Karakter LCD Nedir?

2x16 Karakter LCD
2×16 Karakter LCD

2 satırdan, 16 sütundan oluşan ve her hücresinde bir karakter gösterimini yapabilen bu ekran, elektronik uygulamalarda en çok kullanılan LCD ekranlardandır. Piyasada bulunan LCD’ler satır ve sütun sayılarına göre isimlendirilirler. 1×8, 2×8, 1×16, 2×16, 1×20, 2×20, 1×40 ve 2×40 gibi birçok LCD ekran vardır. Biz uygulamalarımızda 2×16 LCD ekran kullanacağız. Bu LCD piyasada yeşil ve mavi renkli olarak bulunmaktadır. 16 pinli yapıya sahiptir. Bazı LCD üreticileri 14 pinli de üretmektedirler. Genel olarak 16 pinli LCD’leri piyasada çok bulunur. Bu LCD’ler erkek header ile lehimlenerek kullanılır. Ayrıca LCD Shield olarak da projelerde kullanılan LCD’ler vardır.

LCD’nin her sütunu bir karakter alır. Bu alanda 8 satırdan 5 sütundan oluşan noktasal alanlar vardır. Karakterleri byte byte tanımlayarak LCD ekranda özel sembollerin gösterimi yapılabilir. Bunu LCD fonksiyonları ile ilgili vereceğimiz örneklerde göstermeye çalışacağız.

16 pinlik karakter LCD’nin pin bağlantı şeması önemlidir. Pinler doğru bağlanmazsa LCD ekran çalışmayacaktır. Bu nedenle pin şeması iyi bilinmelidir. Aşağıdaki tabloda pin şeması hakkında bilgi vermeye çalıştık.

2x16 karakter LCD pin şema tablosu
2×16 karakter LCD pin şema tablosu

LCD’nin bağlantılarını bu bilgiler doğrultusunda bağladığımızda sorunsuz bir şekilde LCD ekranımızı kullanabiliriz.

Arduino ile LCD Uygulamaları için gerekli devre elemanları:

  1. Arduino ve USB Kablo
  2. 1 adet 2×16 karakter LCD
  3. 1 adet arka aydınlatma LED’i için 220 ohm direnç (Kırmızı, kırmızı, kahverengi)
  4. 1 adet potansiyometre (Ekran kontrastı için)
  5. Devre tahtası
  6. Jumper kablolar

Arduino ile LCD Uygulamaları devre şeması:

LCD Uygulama Devre Şeması
LCD Uygulama Devre Şeması

Arduino ile LCD Uygulamaları Devresi:

Arduino ile LCD Uygulamaları Devresi
Arduino ile LCD Uygulamaları Devresi

LCD uygulamalarında LCD kütüphanesinin program skeçine eklenmesi gerekmektedir.

#include <LiquidCrystal.h>

LiquidCrystal kütüphanesi programa include yani dahil edildikten sonra bu kütüphanenin bütün özelliklerini üzerinde taşıyacak bir nesne tanımlamak gereklidir. OOP dediğimiz Nesne Yönelimli Programlama mantığında bir sınıfın özellikleri kalıtım yoluyla bir başka objeye aktarılabilir. Arduino C++ dilinin kütüphanelerini kullandığından bunu uygulamak son derece basit ve anlaşılır olacaktır.

#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);

lcd adında bir obje, nesne tanımlayarak LiquidCrystal kütüphanesinin tüm özelliklerini, fonksiyonlarını lcd adıyla kullanabileceğiz. Buradaki tanımlamaların nasıl yapıldığını bir kez daha hatırlatmakta fayda vardır.

#include <LiquidCrystal.h>
//LCD bağlantı şeması sırasıyla şu şekilde
// lcd(RS,E,D4,D5,D6,D7);
LiquidCrystal lcd(8,9,4,5,6,7);

Şimdi lcd nesne ile LCD uygulamaları için setup() fonksiyonuna başlangıç kodunu yazarak uygulamalara başlayabiliriz.

#include <LiquidCrystal.h>
//LCD bağlantı şeması sırasıyla şu şekilde
// lcd(RS,E,D4,D5,D6,D7);
LiquidCrystal lcd(8,9,4,5,6,7);
void setup() {
  lcd.begin(16,2);
}
void loop() {
}

LiquidCrystal kütüphanesinde LCD uygulamalarında een çok kullanılan fonksiyonları örnekler üzerinde göstermeye çalışalım.

İlk olarak ekranın hangi hücresine(kaçıncı satır kaçıncı sütun) veri yazılacağı ile ilgili olan setCursor() fonksiyonu ile örneklere başlayalım.

Arduino LiquidCrystal Fonksiyonları:

1.setCursor(): LCD Ekrana yazının pozisyonunu ayarlamak için kullanılır. 2 parametre alır. İlk parametre yazının ilk karakterinin kaçıncı sütundan başlayacağını, ikinci parametre ise yazının 1. mi 2. mi satıra yazılmasını ifade eder.

LiquidCrystal setCursor() fonksiyonu
LiquidCrystal setCursor() fonksiyonu
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
  lcd.setCursor(1,0);//İlk satıra(0) ikinci(1) sütundan yazmaya başla
  lcd.print("www.blogkod.com!"); //LCD ekrana metni yaz
  lcd.setCursor(0,1);// İkinci satıra(1) ilk sütundan(0)  yazmaya başla
  lcd.print("LCD Uygulamalari"); //LCD ekrana metni yaz
}

void loop() {

}

2. print(): Bu fonksiyon ekrana birden fazla karakter yazı yazmak için kullanılır. Tek karakter yazmak için write() fonksyonu kullanılır. write() fonksiyonunu özel karakterlerin gösteriminde örnekle göstermeye çalışacağız. Yazdırılmak istenen metin çift tırnak (“”) içinde yazılır.

LiquidCrystal print() fonksiyonu
LiquidCrystal print() fonksiyonu
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
}

void loop() {
  lcd.setCursor(0,0);//İlk satıra(0) ilk(0) sütundan yazmaya başla
  lcd.print("www.blogkod.com!");//LCD ekrana metni yaz
  lcd.setCursor(1,1);//İkinci satıra(1) ilk sütundan(0 yazmaya başla
  lcd.print("lcd.print("");");//LCD ekrana metni yaz

}

3. clear(): LCD ekranda yazılan her şeyi temizler.

LiquidCrystal clear() fonksiyonu
LiquidCrystal clear() fonksiyonu
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
  lcd.setCursor(4,0);
  lcd.print("BlogKod");
  lcd.setCursor(0,1);
  lcd.print("Ekran silinecek!");
  delay(3000);//3 saniye sonra ekranı temizle
  lcd.clear();
}

void loop() {

}

4. home(): Bu fonksiyonun ekran imlecinin 1. satır 1. sütuna gelmesini sağlar. Örneğimizde ekrandaki yazı 2 saniye bekledikten sonra clear() ile siliniyor ve sonra home() fonksiyonu imleci sol üst köşeye getirilmesini sağlıyor. Ekrana başka bir metin yazılıyor.

LiquidCrystal home() fonksiyonu
LiquidCrystal home() fonksiyonu
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
  lcd.setCursor(1,0);//İkinci satıra(0) ilk(0) sütundan yazmaya başla
  lcd.print("www.blogkod.com!");//LCD ekrana metni yaz
  delay(2000);
  lcd.clear();
  lcd.home();
  lcd.print("Eve geldik... :)");
}

void loop() {
}

5. cursor() ve noCursor(): cursor() fonksiyonu ekrandaki imlecin konumunu gösterir. noCursor() fonksiyonu da imlecin konumunu gizler.

LiquidCrystal cursor() ve noCursor() fonksiyonları
LiquidCrystal cursor() ve noCursor() fonksiyonları
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
  lcd.setCursor(0,0);//İmlec pozisyonu 1.satır 1. sütun
  lcd.cursor();//İmlecin yerini göster
  delay(2000);//2 saniye bekle
  lcd.setCursor(8,1);// İmlec pozisyonu 2. satır 8. sütun
  delay(2000); // 2 saniye bekle
  lcd.noCursor();//İmlecin konumunu gizle
}

void loop() {
}

6. blink() ve noBlink(): blink() fonksiyonu imlecin bulunduğu hücrenin yanıp sönmesini sağlar. noBlink() fonksiyonu da bunu sonlandırır.

LiquidCrystal blink() ve noBlink() fonksiyonları
LiquidCrystal blink() ve noBlink() fonksiyonları
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
  lcd.setCursor(0,0);//İmlec pozisyonu 1.satır 1. sütun
  lcd.print("Burdayim! :)");
  lcd.blink();//İmlec göz kırpsın :)
  delay(4000);//2 saniye bekle
  lcd.clear();
  lcd.setCursor(0,1);// İmlec pozisyonu 2. satır 1. sütun
  lcd.noBlink();//İmlec gizlensin :(
  lcd.print("Artik yokum! :(");
  delay(2000); // 2 saniye bekle
  lcd.clear();//Ekranı temizle
  
}

void loop() {
}

6. noDisplay() ve display(): Bu fonksiyonlar ekrandaki yazının gizlenmesini ve tekrar görünmesini sağlar. clear() fonksiyonu hafızadan silme, temizleme işlevini görüyorken, noDisplay() ve display() fonksiyonları ise ekrandaki yazının gizlenmesini ya da görünmesini sağlar.

LiquidCrystal noDisplay() ve display() fonksiyonları
LiquidCrystal noDisplay() ve display() fonksiyonları
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
}

void loop() {
  lcd.setCursor(0,0);//İmlec pozisyonu 1.satır 1. sütun
  lcd.print("www.blogkod.com");
  delay(2000); // 2 saniye bekle
  lcd.noDisplay();// Ekrandaki yazıyı gizle
  delay(2000);// 2 saniye bekle
  lcd.display(); // Ekrandaki yazıyı göster
}

7. scrollDisplayRight ve scrollDisplayLeft: Ekrandaki verileri sağa ya da sola kaydırmak için kullanılan fonksiyonlardır.

LiquidCrystal  scrollDisplayRight() ve scrollDisplayLeft() fonksiyonları
LiquidCrystal scrollDisplayRight() ve scrollDisplayLeft() fonksiyonları
#include <LiquidCrystal.h>

// lcd(RS,E,D4,D5,D6,D7);

LiquidCrystal lcd(8,9,4,5,6,7);

void setup() {

  lcd.begin(16,2); // 16 sütun 2 karakter LCD aktif
}

void loop() {
  lcd.setCursor(4,0);//İmlec pozisyonu 1.satır 1. sütun
  lcd.print("BlogKod");
  lcd.setCursor(0,1);//İmlec pozisyonu 2.satır 1. sütun
  lcd.print("LCD Kayan Yazi");
  //Ekrandaki metinleri yarım saniye aralıklarla
  // 2 sütun sağa ve 
  // 2 sütun sola sürekli kaydır döngüsü
  for(int i=0;i<2;i++)
  {
  lcd.scrollDisplayRight(); // Sağa kaydır
  delay(500);
  }
  for(int i=0;i<2;i++)
  {
  lcd.scrollDisplayLeft(); // Sola Kaydır
  delay(500);
  }
}

8. createChar(): Bu fonksiyon özel sembolleri ve karakterleri resmetmek için kullanılır. write() fonksiyonunun tek karakter yazmaya yaradığını ifade etmiştik. createChar() ve write() fonksiyonlarını birlikte kullanarak, LCD ekrandaki her hücrede yer alan 5×8’lik yani, 5 sütunluk 8 satırlık alan işaretlenerek sembol ve karakterler çıkarılabilir. LCD ekrandaki hücrelerde yer alan 5×8’lik alanı şöyle görebilirsiniz:

LCD Ekranda her hücrede yer alan 5x8'lik noktalar
LCD Ekranda her hücrede yer alan 5×8’lik noktalar
Noktalar(Zoom)
Noktalar(Zoom)
LiquidCrystal  createChar() ve write() fonksiyonları
LiquidCrystal createChar() ve write() fonksiyonları
#include <LiquidCrystal.h>

// lcd (RS,E,D4,D5,D6,D7)

LiquidCrystal lcd(8,9,4,5,6,7);
//Ekranda gösterimi yapılacak her sembol byte byte kodlanacak
//5x8'lik alana byte byte şekil çizilecek
byte uzgunSurat[8] ={

      B00000,
      B00000,
      B01010,
      B00000,
      B01110,
      B10001,
      B00000,
      B00000,
};

byte ok[8] ={

      B00100,
      B01110,
      B11111,
      B00100,
      B00100,
      B00100,
      B00100,
      B00100,
};

byte kalp[8] ={

      B00000,
      B01010,
      B11111,
      B11111,
      B01110,
      B00100,
      B00000,
      B00000,
};
byte gulenYuz[8] ={

      B00000,
      B00000,
      B01010,
      B00000,
      B10001,
      B01110,
      B00000,
      B00000,
};

void setup() {
  
  lcd.begin(16,2);
// Scope alanında tanımladığımız 4 sembolü 
// karakter karakter oluşturuyoruz
  lcd.createChar(0,uzgunSurat);
  lcd.createChar(1,ok);
  lcd.createChar(2,kalp);
  lcd.createChar(3,gulenYuz);
}

void loop() {
  // Ekranı temizle
  lcd.clear();
  
  delay(2000); // 2 saniye bekle
  lcd.setCursor(0,0); // Sembol ilk satır ilk sütuna işlenecek 
  lcd.write(byte(0)); // Üzgün surat...

  delay(2000); // 2 saniye bekle
  lcd.setCursor(2,1);// Sembol ikinci satır üçüncü sütuna işlenecek 
  lcd.write(byte(1));// ok sembolü...
  
  
  delay(2000); // 2 saniye bekle
  lcd.setCursor(4,1);// Sembol ikinci satır beşinci sütuna işlenecek 
  lcd.write(byte(2));// kalp sembolü...
 
  
  delay(2000); // 2 saniye bekle
  lcd.setCursor(6,0);// Sembol ilk satır yedinci sütuna işlenecek 
  lcd.write(byte(3));// gülen yüz...
  
  delay(2000); // 2 saniye bekle
}


9. autoScroll ve noAutoscroll: Ekranda kayan yazı uygulamaları için kullanılan fonksiyonlardır.

LiquidCrystal autoScroll() ve noAutoscroll() fonksiyonları
LiquidCrystal autoScroll() ve noAutoscroll() fonksiyonları
#include <LiquidCrystal.h>
// lcd(RS,E,D4,D5,D6,D7);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  lcd.begin(16, 2);
}

void loop() {
  
  lcd.setCursor(0, 0);
  //Ekrana sırasıyla 0'dan 9'a kadar rakamları yazacak döngü...
  for (int sayi = 0; sayi < 10; sayi++) {
    lcd.print(sayi);
    delay(500);
  }
  //Ekranda 2. satırda son sütundan itibaren...
  lcd.setCursor(16, 1);
  //Kaydırmaya başla...
  lcd.autoscroll();
    //0'dan 9'a kadar rakamları kaydırarak yazacak döngü...
  for (int sayi = 0; sayi < 10; sayi++) {
    lcd.print(sayi);
    delay(500);
  }
  lcd.noAutoscroll(); // kaymayı sonlandırır
  
  lcd.clear();
}


Bir sonraki uygulamada görüşmek üzere…

BİR YORUM YAZIN

ZİYARETÇİ YORUMLARI - 6 YORUM
  1. Anonim dedi ki:

    Çok güzel

  2. D dedi ki:

    çok iyi içerik elinize sağlık

  3. admin dedi ki:

    @İrem,
    Faydalı olmak dünyanın en güzel duygusudur. Başarı dileklerimle…

  4. İrem dedi ki:

    Yararlı içeriğiniz için çok teşekkürler. Son sınıf proje ödevimi sayenizde yaptım. Emeğinize sağlık.

  5. Gomutan Logiş dedi ki:

    Müq ?

    1. Anonim dedi ki:

      müq

Bilişim Teknolojileri ve Yazılım Ders Notları, Uygulamalar, Kodlama ve Arduino

© 2018-2025 BlogKod