Merhaba arkadaşlar, bu uygulamamızda 2×16 lcd ekran ile sağa sola çarpan yazı uygulamasını yapacağız. Kablo bağlantılarının karmaşık ve çok kablo olmaması için de I2C modülünü kullanacağız. Hemen uygulamamıza geçelim.
[embedyt] https://www.youtube.com/watch?v=lrx7rS3mq44[/embedyt]
Malzeme Listesi
Devre Şeması
Malzeme listesindeki malzemeleri kullanarak devremizi aşağıdaki şemaya uygun olarak kuralım. I2C modülünü kullanmasak devremiz çok karışık olacaktı. Devremizi kurarken hata yapma ihtimalimiz yüksek olduğu için en ufak hatada ekranımız çalışmayacaktı. I2C modülü sayesinde çok kolay bir şekilde ekranımızı kullanabiliyoruz. GND(-) VCC(+) çıkışlarını arduinomuzun GND ve 5V çıkışlarına bağlıyoruz. Modülümüzün SDA çıkışını analog girişlerden olan A4’e , SCL çıkışını ise A5 analog girişine bağlıyoruz. Devremiz bu kadar 🙂
Kütüphane Yükleme
I2C modülü kullandığımız için bu modüle ait kütüphaneyi yüklememiz gerekiyor. Kütüphaneyi indirmek için bu linke tıklayabilirsiniz. Linke tıkladıktan sonra bir zip dosyası inecektir. Arduino IDE’den yeni bir dosya açarak, Taslak->Library Ekle->.ZIP kitaplığı ekle kısmına tıklayalım. Daha sonra ise indirdiğimiz zip dosyasını seçelim ve OPEN diyelim. Bu şekilde kütüphanemiz yüklenmiş oluyor. Şimdi kod kısmına geçebiliriz.
Arduino Kodları
Kod kısmında ilk önce kütüphanemizi projemize ekliyoruz. Daha sonra LiquidCrystal_I2C türünden bir nesne oluşturuyoruz. Nesnenin adı lcd oluyor ve parametre olarak 0x27,16,2 değerlerini veriyoruz. Buradaki 0x27 değeri I2C’nin haberleşme adresidir. 16 ve 2 değerleri ise ekranımızın 2×16 olduğunu tanımlamak içindir.
Setup fonksiyonumuzda “lcd.begin()” komutu ile lcd’yi başlatıyoruz.
Loop fonksiyonumuzda ise yazdır isimli fonksiyonumuzu çağırıyoruz. Bu fonksiyona ilk parametre olarak bir metin veriyoruz, ikinci parametre olarak da yazıyı sağa sola kaydırma yaparken bekleme süresini veriyoruz. Burada önemli olan bir detay var. Süreyi istediğiniz gibi verebilirsiniz ama yazıyı maksimum 16 vermelisiniz. Çünkü lcd ekranımız 16 karakterlik. Yazımızı 16 verirsek sağa sola kayma yapamayacağı için yazımız hareket etmeyecektir. Bu yüzden size tavsiyem 16 dan küçük yazılar girmeniz. Ben örnek olarak “Robolink” girdim.
Yazdır fonksiyonunu anlatmaya geçmeden önce neden ayrı fonksiyon oluşturma sebebimi anlatmak istiyorum. Direk yazdır fonksiyonunun içindeki kodu loop fonksiyonuna atsak da çalışırdı ama daha düzgün, anlaşılır bir şekilde olması için böyle yaptım. Fonksiyonumuz yukarıda da dediğim gibi bir metin ve süre parametrelerini alıyor. İlk olarak girilen metinin uzunluğunu bulup size isminde bir değişkene aktarıyoruz.
Daha iyi anlamanız için “Robolink” metni üzerinden örnek vererek anlatmak istiyorum. Uzunluğumuz 8 olarak hesaplandı ve size değişkenine attık. For döngümüz 0 dan başlayarak 16-size yani 16-8= 8’e kadar gidecektir. Buradaki amaç “Robolink” metninin sırayla 1’er olarak sağa kaydırmaktır. Tam olarak sığması için i değerimiz 0 dan 8’e kadar ilerliyor. Yani “Robolink” metnimiz sağ tarafa dayanmış şekilde oluyor.
For döngümüzün her aşamasında lcd.clear() ile lcd ekran temizleniyor, lcd.setCursor() ile lcd ekranda konumlandırma yapıyoruz ve lcd.print() ile de konumlandığımız yerden veriyi ekrana yazdırıyoruz. Buradaki lcd.setCursor() 2 parametre alıyor. İlk parametre yatay olarak konumlanma indisi yani sütun , ikinci parametre ise dikey olarak konumlanma indisi yani satır oluyor. Biz bu örnekte ilk satıra yazacağımız için ikinci parametre kısmını sabit olarak 0 ayarladık. İlk parametremiz de kaydırma işlemi yaptığımız için değişiklik gösteriyor.
İlk for döngümüz sağa doğru kaydırıyor ve ikinci for döngümüze geçiyoruz. Bu for döngüsü de ilk for döngüsünün tam tersi işlemleri yapıyor. Metinimizi sola doğru kaydırıyor. Bu şekilde metin sağa ve sola çarpıyor. Bu uygulamaya kayan yazı uygulaması da denebilirdi ama kayan yazılarda genellikle tek yöne doğru kayma oluyor. Bu uygulamamızda metinimiz iki yönlü olarak hareket ediyor.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.begin();
}
void loop() {
Yazdir("Robolink",1000); //Metin ve süre
}
void Yazdir(String msg,int sure){
int size = msg.length();
for(int i=0;i<=16-size;i++){
lcd.clear();
lcd.setCursor(i,0);
lcd.print(msg);
delay(sure);
}
for(int i=16-size;i>0;i--){
lcd.clear();
lcd.setCursor(i,0);
lcd.print(msg);
delay(sure);
}
}
Kodları yazdıktan sonra arduinomuzu bilgisayara bağlayıp yükleme işlemini yapabiliriz. Bu sayede sağa sola çarpan yazı uygulamamız gerçekleşmiş olacak.
Yazımı okuduğunuz için teşekkür ederim. Bir sonraki uygulamamızda görüşmek üzere