Arduino ile LCD Kullanımı

Güncelleme tarihi: 2 May 2020

Bu uygulamamızda Arduino ile 16x2 LCD kullanımını yapacağız. Bu uygulamada kullanacağımız malzemelerimiz;

  • Arduino UNO

  • 16x2 LCD

  • 220R veya 330R Direnç

  • Potansiyometre

  • Jumper Kablolar (E-E)

  • Breadboard


Kullanacak olduğumuz LCD'nin özellikleri aşağıdaki gibidir.

Bu özelliklere sahip bir LCD kullanırken aşağıdaki devre şemasını kuruyoruz.





LCD’yi kullanırken LiquidCrystal kütüphanesini kullanacağız.Şimdi bu kütüphane içerisinde olan fonksiyonları detaylı bir şekilde inceleyeceğiz.


LiquidCrystal Kütüphanesi Fonksiyonları


#include < LiquidCrystal.h> // LiquidCrystal kütüphanesinin eklenmesi 

LiquidCrystal Kütüphanesini ekledikten sonra içerisindeki fonksiyonları kullanabiliriz.

LiquidCrystal()


Kütüphanenin ayarlayıcı fonksiyonudur. LCD’nin Arduino’ya bağlanması için gerekli pinlerin ayarlandığı fonksiyondur. Kullanım Şekli ; LiquidCrystal(RS,E,D4,D5,D6,D7) parantez içerisindeki pinler LCD’nin pinleridir. Bu pinleri Arduino da istediğiniz dijital pinlere takabilirsiniz.

Devremizdeki pinlere göre içerisine şu şekilde yazacağız; LiquidCrystal lcd(2,3,4,5,6,7);


lcd.begin()


Üzerinde çalışacağımız LCD’nin boyutlarını ayarlar. Bu fonksiyon programın void setup() bölümünde kullanılır. lcd.begin(sütun sayısı,sütun sayısı), biz 16x2 LCD kullanacağımız için lcd.begin(16,2) yazacağız.

#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //lcd isimli nesnemizi oluşturuyoruz.
void setup() {
lcd.begin(16,2); //LCD’nin özellikleri 16x2 boyutlarında olduğunu belirttik.
}
void loop() {
//…
} 

lcd.print()


LCD’ye veri yazdırmak için kullanılır.

lcd.print(veri); //Veri char,byte,string,int gibi herhangi bir türde olabilir.

lcd.print(veri,taban) ; //Verinin hangi tabanda ekrana yazılmasını belirtir. İkilik taban için BIN, onluk taban için DEC, sekizlik taban için OCT, on altılık taban için HEX yazılır.

lcd.setCursor()


Bu fonksiyon imlecin ayarlanmasını sağlar.

lcd.setCursor(sütunNumarası,satırNumarası); // Belirtilen sütun ve satır numarasına imleci yerleştirir.

Kullandığımız LCD 2 satır (0.Satır – 1.Satır) , 16 sütundan (0.Sütun – 15.Sütun) oluşmaktadır.

#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //lcd isimli nesnemizi oluşturuyoruz.
void setup() {
lcd.begin(16,2); //LCD’nin özellikleri 16x2 boyutlarında olduğunu belirttik.
}
void loop() {
lcd.setCursor(0,0);  // imleci 0.Sütun,0.Satıra yerleştirdik.
lcd.print("-HAYATIMA DOKUN-");
lcd.setCursor(3,1); // imleci 4. Sütun, 2. Satıra yerleştirdik.
lcd.print("Abone Ol ! ");
}
İmleci 4.Sütun,2. Satıra yerleştirdik ve sonra yazdırmaya başladık.


lcd.clear()


Bu fonksiyon LCD’de bulunan veriyi siler ve imleci (0,0) pozisyonuna getirir.

print() ve clear() kullanarak yanıp sönen bir metin oluşturabiliriz.

#include <LiquidCrystal.h>
 
 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
 
void setup()
{ lcd.begin(16, 2); 
}
 
void loop() {
 lcd.setCursor(0,0);
 lcd.print("-HAYATIMA DOKUN-");
 lcd.setCursor(3, 1);
 lcd.print("Abone Ol !");
 delay(1000);
 lcd.clear();
 delay(500);  
}

lcd.cursor() – lcd.noCursor()


Bu fonksiyonlar imleci görünür hale getirir veya gizler. İmleç LCD üzerinde ‘_’ şeklinde gösterilir.


lcd.home()


Bu fonksiyon imleci 0.Sütun ve 0.Satır pozisyonuna getirir.


lcd.write()


Bu fonksiyon LCD’de tek bir karakter yazdırmak için kullanılır. LCD’ye birden fazla karakter yazdırmak için lcd.print() fonksiyonunu kullanırız.

#include<LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7); //lcd isimli nesnemizi oluşturuyoruz.
char data[] = {'-','H','A','Y','A','T','I','M','A',' ','D','O','K','U','N','-'};
 
void setup() {
lcd.begin(16,2); //LCD’nin özellikleri 16x2 boyutlarında olduğunu belirttik.
}
void loop() {
 for(int i = 0 ; i < 16 ; i++){
 lcd.write(data[i]); // data dizimizdeki elemanları sırasıyla tek tek yazdırdık.
 delay(100);
 }
 delay(500);
 lcd.clear();
}

lcd.blink() – lcd.noBlink()


blink() fonksiyonu cursor() fonksiyonuna benzerdir. blink() fonksiyonu imlecin bulunduğu konumda yanıp sönmesini sağlar. noBlink() ise bu yanıp sönme işlevini kapatır.

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
void setup()
{
 lcd.begin(16, 2);
 lcd.blink();
 lcd.print("HAYATIMA DOKUN");
 
}
 
void loop() {
//… 
}



lcd.display() – lcd.noDisplay()

Bu fonksiyon LCD’ye yazdırılmış veriyi görünür hale getirir veya gizler. Bu iki fonksiyonla lcd.clear() örneğinde yaptığımız gibi yanıp sönen bir metin elde edebiliriz.

#include <LiquidCrystal.h>
 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
void setup()
{
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print("-HAYATIMA DOKUN-");
 lcd.setCursor(3, 1);
 lcd.print("Abone Ol !"); 
 
}
 
void loop() {
 
 
 lcd.display();
 delay(1000);
 lcd.noDisplay();
 delay(500); 
} 


lcd.scrollDisplayLeft() – lcd. scrollDisplayRight()


Bu fonksiyonlar ile LCD üzerindeki verileri sağa ve sola kaydırabiliriz. delay() komutu ile loop() bölümünde kullanmalıyız.

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
void setup()
{
 lcd.begin(16, 2);
   lcd.setCursor(0,0);
 lcd.print("-HAYATIMA DOKUN-");
 lcd.setCursor(3, 1);
 lcd.print("Abone Ol !"); 
 
}
 
void loop() { 
 
 lcd.scrollDisplayLeft(); //lcd.scrollDisplayRight(); yaparsak metin tam tersi şekilde hareket edecektir.
 
 delay(100);
 }


lcd.leftToRight () – lcd.rightToLeft ()


Bu fonksiyonlar LCD’ye yazdırılan verinin yazdırma yönünü belirler. LCD üzerinde varsayılan mod leftToRight() yani soldan sağa doğrudur. Bazı uygulamalarda veriyi sağdan sola doğru yazdırmamız gerekebilir.

#include <LiquidCrystal.h>
 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
void setup()
{
 lcd.begin(16, 2);
 lcd.setCursor(15,0); // sağdan sola doğru yazdıracağımız için imleci tersten ayarladık.
  lcd.rightToLeft();
 lcd.print("-HAYATIMA DOKUN-");
 lcd.setCursor(12, 1);
 lcd.print("Abone Ol !"); 
 
}
 
void loop() {
//…
}


lcd.autoscroll() – lcd.noAutoscroll()


Bu fonksiyonlarda lcd.scrollDisplay() işlevleri gibi LCD’deki verilerin kaydırılması için kullanılır.

Bu fonksiyon LCD de bulunan verinin karakter sayısının artışıyla sağdan sola doğru kaydırır. lcd.noAutoscroll() fonksiyonu ise bu fonksiyonu kapatır.

Örneğin 2 karakterli bir verimiz varsa her adımda veriyi 2 adım sola kaydırır.

#include <LiquidCrystal.h>
 
 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //RS,EN,DB4,DB5,DB6,DB7
 
 
void setup()
{
 lcd.begin(16, 2); 
 
}
 
void loop() {
 
 lcd.setCursor(0, 0);
 lcd.autoscroll();
 lcd.print("RD");
 delay(500);
 
}


lcd.createChar()


Bu fonksiyon LCD’de bulunmayan özel karakterleri oluşturmamızı sağlar. 16x2 LCD ekranımızda her bir karakterin 5x8 piksel özelliğindedir. Kendi karakterlerimizi tasarlamak için internet üzerinde farklı karakter tasarlayıcılar vardır. Biz bu linkte bulunanı kullandık.

Aşağıdaki kod ‘♥’ şeklini oluşturur.

#include <LiquidCrystal.h>
 
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
 
byte customChar[8] = {
 0B00000,
 0B01010,
 0B11111,
 0B11111,
 0B01110,
 0B00100,
 0B00000,
 0B00000
};
void setup()
{
 
 lcd.createChar(0, customChar);
 
 
 lcd.begin(16, 2);
 lcd.setCursor(8,0);
 
 lcd.write((uint8_t)0);
}
 
void loop()
{
 
}

Projenizi yaparken karşılaştığınız problemleri yorumlar kısmında belirtirseniz ekibimiz en kısa sürede size yardımcı olacaktır





Son Paylaşımlar