Bu uygulamada karakter LCD nasıl bağlanır, komutları nelerdir bunlardan bahsedeceğim.
LCD, Liquid Crystal Display yani Sıvı Kristal Ekran elektrikle kutuplanan sıvının ışığı tek fazlı geçirmesi ve önüne eklenen bir kutuplanma filtresi ile gözle görülebilmesi ilkesine dayanan bir görüntü teknolojisidir. Piyasada kullanılan LCD ler genelde Hitachi firmasının HD44780 entegresini içerir. Karakter LCD’de genelde 14 adet pin bulunur. Bu pinlere ek olarak LCD arka ışık besleme uçlarıdı bulunur.
LCD’nin temel bağlantı şekli aşağıdaki gibidir. RS,E,D4,D5,D6,D7 pinleri Arduino’nun başka pinlerine de bağlanabilir sabit değildir. VEE ve GND arasına 10Kohm’luk potansiyometre bağlanmalıdır. Bu direnç LCD kontrast ayarıdır. LCD karakterleri gözükmez ise potansiyometre ayar çubuğunu çevirerek doğru direnci bulunuz. Direnç bağlanmadığı takdirde LCD’de karakterler gözükmez.
Arduino ile LCD’yi kullanabilmek için ilk önce LCD kütüphanesi tanıtılmalıdır;
1 |
#include <LiquidCrystal.h> |
Tanıtıldıktan sonra hemen altına pin sırası belirtilmelidir;
1 |
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); |
Komutu ile LCD pinlerinin Arduino pinlerinin hangisine bağlı olduğu bildirilmektedir.
1 |
LiquidCrystal lcd(10, 9, 5, 4, 3, 2); |
Bu komut ile
LCD RS pini Arduinonun 10 nolu pini,
EN pini 9 nolu pini,
D4 pini 5 nolu pini,
D5 pini 4 nolu pini,
D6 pini 3 nolu pini,
D7 pini 2 nolu pini olarak tanımlanmıştır.
1 2 3 4 |
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); LiquidCrystal lcd(0, 2, 8, 4, 15, A5); LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); LiquidCrystal lcd(A2, 8, A5, 4, A3, 2); |
Bu pinleri istediğiniz gibi değiştirebilirsiniz. Analog pinlerde kullanılabilir.
1 2 3 |
void setup() { lcd.begin(sutun, satir); } |
lcd.begin(sutun,satır); komutu kullanıdığınız LCD’nin sütun ve satır bilgilerini tanımlar.
16 x 2 LCD kullanıyor iseniz lcd.begin(16,2);
16 x 4 LCD kullanıyor iseniz lcd.begin(16,4);
24 x 2 LCD kullanıyor iseniz lcd.begin(24,2);
Ön LCD komutları bitmiştir diğer komutlar ise programın akışına göre kullanılan komutlardır;
1 |
lcd.print("Yazi"); |
Bu komut LCD de metin, değişken değeri yazdırmamızı sağlayan komuttur.
1 2 3 4 |
lcd.print("Onur"); //Ekrana Onur yazar lcd.print("MikroCore"); //Ekrana MikroCore yazar int a = 5; lcd.print(a); //Ekrana a değişkenini; 5 yazar |
1 |
lcd.clear(); |
LCDde ki satırları temizleyen komuttur.
1 |
lcd.setCursor(sutun, satir); |
LCD konumunu verilen sütün ve satıra götürür.
lcd.setCursor (0,1); LCD kursorü 2. satıra gider,
lcd.setCursor (5,0); LCD kursoru 6. sütuna gider,
lcd.setCursor (2,1); LCD kursoru 2. satır 3.sütuna gider.
LCD de bir değişkeni belirli zaman aralıkları ile yazıdırıyosanız LCDyi temizlemeniz gerekir. Aksi takdirde kursor kaydığı için değişen karakterlerler yan yana yazılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <LiquidCrystal.h> LiquidCrystal lcd(10, 9, 5, 4, 3, 2); int a = 5; void setup() { lcd.begin(16, 2); } void loop() { lcd.print(a); delay(500); lcd.clear(); a++; } |
Ancak değişen kısımın çok hızlı bir şekilde değişmesini istiyorsanız LCD’ye hızlı bir şekilde fazla komut işleyemeyeceğinden dolayı yazılar silik çıkar. Bunu önlemek için sadece değişen kısmı güncellemek gerekir. Yani;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <LiquidCrystal.h> LiquidCrystal lcd(10, 9, 5, 4, 3, 2); int a = 5; void setup() { lcd.begin(16, 2); lcd.print("Sayi = "); } void loop() { lcd.setCursor(7, 0); lcd.print(a); delay(10); a++; } |
“Sayi = ” kısmından sonraki karakter 7. sütuna denk geldiği için kursor 7. sütuna alınır ve a değişkeni oraya yazılır. 10ms sonra a değişkeni arttırılır ve yeniden 7. sütuna gidilip yeni değer yazılır. Böylece hızlı değişimlerin akıcı görülmesi sağlanır.
***LCD pinleri 16 tanedir. Şemada olmayan 2 tane arka ışık pini vardır.(LED+,LED-) Bu pinler 15,16 da olabilir 1,2de olabilir. Üretici ve LCD sürümüne göre değişmektedir.