MBLOCK ile EASYLCD modülünü kullanmayı kolaylaştıran, EASYLCD uzantısı

Mblock ile LCD kullanmak isteyenler için çeşitli uzantılar var. I2C ile çalışan modül için yapılmış uzantıların bazıları sadece 2×16 destekliyor. Bazıları ise hem 2×16 hem de 4×20 diye belirtiliyor.

EASYLCD modülü LCD yi kontrol etmek için RS232 seri haberleşmeyi kullanıyor.
Kütüphane kullanılmadığı için Arduinonun hafızasını doldurmuyor. HD44780 uyumlu tüm LCD leri kontrol ediyor. Piyasadaki karakter LCD lerin büyük çoğunluğu bu uyumluluğa sahiptir.
Satır sayısı ve sütun sayısı fark etmiyor. 4*20 ye kadar kontrol edebilir. Bir satırda 40 karaktere kadar yazılabiliyor. Fakat görülebilir alan 2×16 lcd lerde 16 karakterdir. Ekranı sola kaydırıp yazdığınız karakterleri görebilirsiniz. Bu iş için gereken komutları bloklar arasında komutlar blok’unda seçeneklerde bulabilirsiniz.

Yeni yapılan Uzantı ile artık tek kablodan bile LCD yi kontrol edebiliyorsunuz. Ayrıntılı hazırlanan bloklarla rahatça LCD kontrolünü yapabilirsiniz.
Uzantı hem Türkçe hem de İngilizce desteğe sahip. Ayrıca Uzantı için bloklar ayrıntılı hazırlandığından, bloklar size yetecektir. EASYLCD modülle LCD kontrolü için başka bloklara ihtiyacınız olmayacaktır.
Şu anda sadece donanımsal haberleşmeyi kullanıyor. Arduino’nuzun TX ve RX çıkışlarını kullanabiliyorsunuz. Yakında yazılımsal seri kullanarak, istediğiniz Arduino pinini kullanarak, LCD kontrol edebileceksiniz. Bu gelecek versiyonun Uzantı ismi SOFTEASYLCD olacak.

Arduino için MBLOCK uzantı eklemeyi biliyorsunuz diye düşünüyorum. Bilmeyenler videodan faydalanabilirler.
Videoda gördüğünüz karakter kodlarını bu siteden elde edebilirsiniz. LCD için karakter jeneratörü.

Yeni karakter yapmak için elde ettiğiniz HEX 16 lık sisteme göre olan karakter kodlarını örnekteki gibi yazmanız gerekiyor. Aşağıda ilgili bloklarda anlatılacaktır. 

Blokların açıklamaları:

LCDWR lcd yaz komutudur. 2 çeşittir. Birisi sadece sizin verdiğiniz satir ve sütuna yazı yazmanızı sağlar. FIXED yazan bu şekilde çalışır. Ortada gördüğünüz
Serial text kısmına istediğiniz karakteri yazabilirsiniz. Türkçe karakter yazamazsınız bunun için aşağıda gördüğünüz Serial write komutu vardır. Bu komutla yeni karakterleri yazabilirsiniz. Yukarıdaki blokların Arduino komutlarında karşılığı budur.

Serial.print("LCDWR 1,1-");Serial.print("Start Animation");delay(2000);

LCDWR ADJ . Bu da diğer lcd yazma komutudur. burada satır ve sütun kısmına değişken koyabiliyoruz.  Mesela, Bir yatay hareket düşünüyorsunuz. Bu hareket için satır sabit fakat sütun kısmı devamlı değişecek şekilde yazı yazdırmak istediniz. Bu durumda buradaki say değişkeni gibi bir değişken kullanabilirsiniz. Yukarıdaki blokların Arduino kodu budur.

Serial.print("LCDWR "+String((int(1)),DEC)+","+String((int(say)),DEC)+"-");Serial.write(0x20);delay(2000);

Hex kodlarını yazdırmak için yine yazdırma blok’unu kullanabilirsiniz. Fakat burada hex kodunu byte olarak yazdırmanız gerekecektir. Bunun için serial write komutunu kullanıyoruz. Yeni karakter yaparken ve ekrana getirirken de aynı şekilde byte yazmamız gerekecektir.

Neden BYTE kullanıyoruz: Bu EASYLCD modülün bir isteği değildir. Tüm uyumlu LCD ler bu şekilde çalıştığından bu şekilde yazmak zorundayız. 
ASCII kodları bilgisayarların vb cihazların kullandığı karakterlerdir. Bu karakterlerin ilk 127 tanesi klavyede gördüğümüz karakterlerdir. Bunlardan ise ilk 31 tanesi klavyede işlevi olan ve ekranda görünmeyen karakterlerdir. Mesela enter tuşu , backspace tuşu gibi. HD44780 uyumlu tüm LCD çeşitleri 0-7 sayılarını yeni karakterlere ayırmıştır. Siz yeni karakteri oluştururken, kullanırken bu kodu kullanmalısınız. Klavyedeki sıfır rakamı ile karıştırmayın. ASCII tablosundaki 0. karakteri vermeniz gerekiyor. Bunun da yolu hex olarak 0x00 vermektir.
Aşağıda ASCII tablolarını görebilirsiniz. 2 tablo var. Bunlardan birincisi, ilk 127 karakterdir. Bunlar tanıdık gelecektir. 2. tablo ise genişletilmiş karakter tablosudur. diğer dillere ait yada sembollere aittir.
NOT: Burada 127 den sonra gördüğünüz karakteri de yine byte olarak vermeniz gerekir. Çünkü klavyede basabileceğiniz karşılığı yoktur. LCD de görünmesi için byte olarak vermelisiniz.
Önemli bir nokta da aldığınız lcd de 127 den sonraki kısım aynı olmayabilir. Bundan dolayı lcd nin kılavuzuna bakıp o karakteri bulabilirsiniz. Ya da bir döngü yaratıp tüm lcd nin içeriğini byte olarak  0x20 den 0xFF ye kadar göndererek ekrana yazmasını sağlayabilirsiniz. Bu kodlar hex kodlarıdır. decimal sistemde ise 32-255 arasına karşılık gelir.

Yandaki resimdeki gibi Öncelikle seri haberleşme parametrelerini ayarlıyoruz. Bu olmadan rs232 seri haberleşme komutları çalışmaz. Burada gördüğünüz 2400-115200 arası EASYLCD ile haberleşebileceğiniz hızlardır.
Bu hızları kullanırken donanımsal seri haberleşme kullanıyorsanız ki bu uzantı donanımsal seri kullanımınıza göre yapılmıştır. 115200 ‘e kadar kullanabilirsiniz


Burada tek bir blokta birden fazla komut seçeneği görüyorsunuz. bunlar LCD üzerinde uygulayabileceğiniz komutlardır. Bu komutların açıklaması yanlarında yazmaktadır. Mesela imleci (cursor)  sağa sola götürmek için LCDCL ya da LCDCR komutunu kullanabilirsiniz.

 

 

EASYLCD tek kablodan delay dediğimiz Gecikme süresi verilerek çalışır. Ayrıca EASYLCD modül kullanıcılara geri bildirim de vermektedir. Tx ve RX uçlarını kullanarak geri bildirim alabilirsiniz. Bu geri bildirim yazdırma işlemi yada komut uygulaması bittiğini belirtir. LCD R ifadesi geri gelir. R=Ready hazır demektir. bu resimdeki 1. blok’u program başına yerleştirirsiniz. 2. blok’u da programda LCD delay gördüğünüz yere koyarsanız programınız EASYLCD ye bir komut yollar. Bu komut uygulandıktan sonra modül programınıza LCD R yollar. 1. blok LCD R gelesiye kadar programınızı bekletir ve geldiğinde programınız kaldığı yerden devam eder. Bu en hızlı çalışabilme metodudur.

EASYLCD kendi hafızasında 24 yeni karakteri tutabilir.  Bu hafızadaki karakterlerinizi ekranda kullanmak istediğinizde 0-7 karakter kullanabileceğinizi söylemiştik bu karakterlere eeprom dan çağırıp atama yapablirsiniz. Bu komutla yeni karakter oluşturma derdinden kurtulmuş olursunuz. Ayrıntılı bilgiyi EASYLCD sayfasından elde edebilirsiniz. 

Yeni karakter oluşturmak için 2 blok kullanılır. Bunlardan biri en baştaki kaçıncı karakter olduğunu belirten bloktur. diğerleri ise byte olarak ekrana yazma kodudur. Buradaki 8 byte bir karakterin oluşumu için gereklidir. yazının başında anlatıldığı gibi karakter jeneratöründen elde edebilirsiniz.

 

 

Burada da yeni karakter oluşturuluyor. Fakat bu kez LCD nin içine değil EASYLCD nin eepromuna kayıt yapılıyor. Yine aynı şekilde yapıldığına dikkat edin. Önce hangi hafızaya kayıt edilecekse o hafıza adresi verilir ve arkasından 8 adet byte kodu verilir. Yeni karakteri eeproma kayıt etmiş olursunuz.

 

 

 

LCD üzerinde istediğiniz bir satır ve sütunu seçerek, oradaki karakteri okuyabilirsiniz.

Bu komut ile LCD ekrandan bir karakter okunur. Okumak istediğiniz satır ve sütunu belirtirsiniz ve karakter size RX seri haberleşme ucundan gelecektir.
Bunun ne faydası var? Seri haberleşme kullanıyorsanız ekranda bir karışma olduğunda siz görüp düzeltirsiniz. Fakat Mikroişlemci bunu nasıl görüp düzeltebilir. Bunun için LCD üzerinde sizin belirlediğiniz bir karakter hala yerinde mi diye kontrol eder. Şayet yerinde değilse, LCD ekranın karıştığını düşünüp LCD yi otomatik olarak temizleyip son ekranı yeniden yazabilir son verileri yeniden ekrana yazabilir.

TÜM KOMUTLARA AİT BLOKLAR. İngilizce ve Türkçe: Bloklar sadece gösteri amaçlıdır bu şekilde birbirine bağlanamaz.

 

SOFTEASYLCD Farklılıkları :

Softeasylcd uzantısı donanımsal seri kullanan diğer uzantı ile aynı olmakla birlikte donanımsal seri pinlerini ayarlamak için pin ayarlama bloğu eklenmiş şeklidir. Fakat uzantıları birbirine karıştırmayın. Çünkü donanımsal seri port kullanırken komut “Serial print” olurken yazılımsal seri port kullanırken komut ” easySerial print” olacaktır. bu ayrıma dikkat etmeniz gerekiyor.
Bu durum modülden kaynaklanmıyor Arduino programlama gereğidir. 

Önemli Nokta: Yazılımsal seri kullanırken (SOFTEASYLCD uzantısı) Serial write komutunda arduino kütüphanesinden gelen bir problem vardır. Bu problem 0 sıfır problemidir.
serial write 0x00 dediğinizde bunu nasıl algılayacağını tam bilemediği için derleme hatası verir. Bunu önlemek için bloklar tüm hex kodlarını kullanırken yanına belirteç koyar. bu sadece 0x00 durumundan dolayı konuldu. Fakat blok tek tip olduğundan sizi etkilemesin diye tüm hex kodlarının başında göreceksiniz. Bu kütüphanenin daha stabil çalışmasını sağlayacaktır.
Doğru komut şu şekildedir:

easySerial.write((uint8_t)0x10);

ve

easySerial.write((uint8_t)0x00);

Bu şekilde Hex kodu artık daha stabil şekilde derlenebilecektir. 

Softeasylcd uzantısında farklı olan blok budur.

Bu pimleri değiştirerek diğer pimlerden de seri port haberleşmesi elde edebilirsiniz.  

 

Videoda gördüğünüz program ve donanımsal seri port’u kullanan Uzantı bu dosyadadır.

Videoda gördüğünüz program ve Yazılımsal seri port’u kullanan Uzantı bu dosyadadır.

EASYLCD Facebook sayfası

EASYLCD Detaylı bilgi 

TÜM PROGRAMLARA BURADAN ULAŞABİLİRSİNİZ.

 

2 Comments

  1. Özenle hazırlanmış kaliteli bir döküman. Umarım bir gün hak ettiği ilgiyi bulur. Başarılarınızın devamını diliyorum.

erdem için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak.