Bu bloga bakmadan önce Dev Rehber 1‘e göz atmanızı şiddetle tavsiye ederim! 😉
Kullandığımız LCD’deki pinlerin diyagramını aşağıda ki gibidir. LCD ekranımızda 16 adet pinimiz var. Kullanacağımız ekrana göre pinler ekranın üst, alt veya her iki tarafında da olabilir. Çok nadir bazı ekranlarda ise arka aydınlatma ışığı bulunmadığı için 14 adet pin bulunur. 15 ve 16 numaralı pinler, ekran aydınlatması bulunan ekranlarda arka ışığı yakmak için kullanılır, Arka ışıklar LCD’den ayrıdırlar yani arka ışığının pinini bir dijital porta takarak kullanabiliriz. Her bir pinden Arduino’ya olan bağlantılar aynı olucaktır, ancak pinleriniz LCD üzerinden farklı şekilde düzenlenebilir. Bunun için LCD’nin datasheet‘ine bakabilirsiniz.
Uyarı: Breadboard’a bağlamadan önce LCD’nize 16 pinlik bir başlık lehimlemeniz gerekebilir. LCD’yi Arduino’nuza bağlamak için aşağıdaki şemayı takip edin:
İsterseniz potansiyometreyi kullanmayabilirsiniz, potansiyometre ile arka ışığının kontrast ayarını yapabiliriz ancak istemiyorsanız V0 pinini direk 5 volt vererek arka ışığı kullanabilirsiniz. Şemayı daha net görmek isterseniz buraya tıklayın.
Göreceğimiz kodların tamamı Arduino IDE ile gelen LiquidCrystal kütüphanesidir. Bu kütüphane ile bir çok özellik deneyeceğiz tabi ki dev bir rehber olduğu için LiquidCrystal kütüphanesine’de anlatmadan geçemeyiz. 🙂 Şimdi “nedir bu LiquidCrystal kütüphanesi?” dediğinizi duyar gibiyim. 😄 Hemen anlatayım.
LiquidCrystal ekranlar (LCD’ler) ile iletişimini sağlar. Bu kütüphane, bir Arduino/Genuino kartının çoğu metin tabanlı LCD’de bulunan Hitachi HD uyumlu yonga setine dayalı LiquidCrystal ekranları (yani LCD’leri) kontrol etmesi olarak tanınır. Kütüphane 4 veya 8 bit modunda çalışır. Buraya tıklayarak GitHub reposundan son sürümünü indirebilirsiniz.
LiquidCrystal kütüphanesinin kullanabileceğimiz 19 farklı fonksiyonu vardır. Bu fonksiyonların yazının konumunu değiştirme, ekran boyunca yazıyı kaydırma veya görüntüyü açıp kapatmak gibi işlevleri vardır. Şimdi bu fonksiyonları teker teker öğrenelim:
Görevi Arduino’nun LCD’ye bağlanmak için kullandığı pinleri belirtir. LCD’yi kontrol etmek için Arduino’nun dijital pinlerinden rastgele birini kullanabiliriz. Arduino pin numaralarını bu sırayla parantez içersinde koymamız gereklidir.
İşlevi Arduino’nun LCD’ye bağlanmak için kullandığı pinleri ayarlar. LCD’yi kontrol etmek için Arduino’nun dijital pinlerinden herhangi birini kullanabilirsiniz. Arduino pin numaralarını bu sırayla parantez içine koyunuz: RS, E, D4, D5, D6, D7 LCD pinleridir.
NOT: Ekranı ’lcd’ olarak adlandırdığımıza dikkat edin. “ekran” gibi isterseniz farklı bir isim verebilirsiniz. Eğer değiştirirseniz yazının geri kalanında lcd’yi yeni adla değiştirmeniz gerekecektir.
Örneğin, LCD pini D7’nin Arduino pininden 2’ye bağlanmasını istediğinizi varsayalım. D7’nin yerine şu şekilde “7” koyunuz: . Bu işlev, programın bölümünün önüne yerleştirmeliyiz çünkü pinleri tanımlama yapıyoruz eğer en üste yerleştirmezsek hata alırız.
Bu komut, LCD’nin boyutlarını ayarlar. Programın bölümünde herhangi bir LiquidCrystal işlevinin önüne koyulmalıdır. Satır ve sütunların sayısını olarak belirtilmelidir. Bu parametreler aracılığı ile LCD ekranımızın kaç satır ve kaç sütun olduğunu belirtiriz. 16x2 LDC’lerde, kullanmamız gerekiyor veya 20x4 LCD içinde kullanabilirsiniz.
Bu komut, veya bölümünde kullanılabilir. LCD ekranın ilk sütununa ve satırına bir mesaj yazdırır. Kullanımı: ile ekrana yazdırılır. Metnin etrafına tırnak işaretleri koymanız gerektiğini unutmayın. Sayıları veya değişkenleri yazdırmak istediğinizde, tırnak işareti gerekmez. ile sayıları ondalık, ikili, onaltılık ve sekizlik tabanda yazdırabilir. Hemen bir örnek yapalım:
LCD Ekranda şekilde gözükecektir:
Bu komut, veya bölümünde kullanılabilir. LCD’de görüntülenen herhangi bir metni veya veriyi siler ve imleci ekranın sol üst köşesine (ilk satır ve ilk sütun) konumlandırır.
İsterseniz şu ana kadar öğrendiklerimizle bir yanıp sönen yazı yapalım.
LCD Ekranda şekilde gözükecektir:
Bu komut, imleci ekranın 0. satıra ve 0. sütuna yani ekranın sol üst köşesine imlecin gelmesini sağlar. Eğer komutunu kullandıktan sonra kullanırsak üzerine yazacaktır. Örneğin ekrana “projedefteri” yazalım ve sonra komutunu kullandıktan sonra funduszeue.info ile ekrana “” yazdıralım.
Ekranda şu şekilde gözükecektir:
Bu komut ekran imlecinin pozisyonunu ayarlamak için kullanılır. komutuna benzer ancak ‘dan daha kullanışlıdır. Çünkü bu komut imleci (ve herhangi bir yazılı metni vb.) ekranın istediğimiz herhangi bir yerine yerleştirir. Programın ya da bölümünde kullanılabilir.
fonksiyonu parametre olarak aldığı satır ve sütun numarasını temsil eden LCD ekran hücresine imleci konumlandırır.
İmleç konumu, mantığı ile çalışır. Sütun ve satır koordinatları sıfırdan başlayarak sırasıyla ve () Örneğin, yukarıda yaptığımız “projedefteri” programının bölümünde kullanarak, “projedefteri” alt satırda ve sağa üçünçü pixel alanına imleci kaydırarak yazdıralım.
LCD Ekranda şekilde gözükecektir:
Bu komut imleci görünür yapar. İmleç, LCD’ye yazdırdığımız sonra ki karakterlerin altına gelen yatay bir çizgidir. komutu imleci kapatır. ve bir çok metin giriş alanında gördüğümüze benzer yanıp sönen imleci yardırmak için bölümünde kullanılabilir. Hemen bir yanıp sönen imleç yapalım.
LCD Ekranda şekilde gözükecektir:
Bu komutlar ekrandaki yazının gizlenmesini ve tekrar görünmesini sağlar. fonksiyonu hafızadan silme, temizleme işlevini görüyorken, ve fonksiyonları ise ekrandaki yazının gizlenmesini ya da görünmesini sağlar.
Ekranda şu şekilde gözükecektir:
LCD’ye farklı tiplerde ver yazdırmak için bu komutu kullanabilirsiniz, örneğin DHT11’den gelen sıcaklık ve nem bilgilerini, bir HCSR sensöründen gelen uzaklık, yakınlık bilgisini ekrana yazdırabilirsiniz. Kendimiz oluşturduğumuz özel karakterleri yazdırmak amacıylada kullanabiliriz.
Bu komut kendi özel karakterlerimizi oluşturmamıza yarar. 16x2 LCD’nin her bir krakterinin 5 piksel genişliği ve 8 piksel yüksekliği vardır. Tek bir programda 8 farklı özel karakter tanımlayabiliriz. Örneğin ekrana Türkçe karakter olarak “ç” harfini yazalım. Sizde kendinize özel karakter yapmak istiyorsanız buraya tıklayın.
LCD Ekranda şekilde gözükecektir:
Bu komut, döngü başına yaklaşık milisaniyede bir imlecin bulunduğu pixeli yakıp sönmesini sağlar. Bunu alanında kullanılır. komutu ise pixeli söndürür. Hemen bir örnek yapalım.
LCD Ekranda şekilde gözükecektir:
Bu komut, LCD’ye yazdırdığımız her şeyi alır ve sola doğru taşır. Bunu takiben bir gecikme komutu ile bölümünde kullanılmalıdır. Komut, ilk karaktere geri dönmeden önce metni 40 alan sola taşır. Bu kod, “projedefteri” metnini, karakter başına bir saniyede olmak üzere sola taşır, hemen bir örnek kod ile görelim.
LCD Ekranda şekilde gözükecektir:
Bu komut, gibi davranır ancak metni sağa taşır.
LCD Ekranda şekilde gözükür:
Bu komut bir metin dizisi alır ve dizinin karakter sayısının artışlarıyla sağdan sola kaydırır. Örneğin; 3 karakter uzunluğunda bir metin diziniz varsa, her adımda metni 3 alan sola kaydırır:
LCD Ekranda şekilde gözükür:
, işlevini kapatır. Kayan metin veya animasyon dizileri oluşturmak için bölümünde işlevinden önce veya sonra bu işlevi kullanabilirsiniz.
Bu komut, metnin ekrana yazdırıldığı yönü ayarlamamıza yarar. Varsayılan mod, komutunu kullanarak soldan sağa doğrudur, ancak metnin ters yönde yazmak istiyorsak bu komutu kullanabilirsiniz, aşağıdaki örnekteki gibidir.
LCD Ekranda şekilde gözükür:
Aşağıdan çevrimiçi olarak çalıştırabilirsiniz. 😊 Eğer kendiniz düzenleyip değiştirmek istiyorsanız buraya tıklayabilirsiniz. 😉
Umarım yararlı sizin için yararlı bir blog olmuştur. 🙂 Sizden bir ricam var, 😀 aşağıda bulunan “Sen ne düşünüyorsun?” bölümünden düşünceni paylaşarak ve yorum yaparak hem bana destek olabilir ve daha çok kişiye ulaşabilmesini sağlayabilir hemde görüşünüzü öğrenebilirim. 😊 En güncel, neredeyse tüm kaynaklarda araştırarak dev bir blog oluştu. Aylardır yapmaya ve yazmaya devam ettiğim bir blog oldu… Yardımcı olabildiysem ne mutlu bana! Sağlıcakla… 🥰
Arduino 16×2 LCD Ekran kullanımı, bir çok projede kullanıcı arayüzü bakımında oldukça zengin bir kullanım alanına sahiptir. LCD ekran kullanarak, veri takibi, basit oyun senaryoları, güvenlik sistemleri, sensör okumaları ya da otomasyon işlemlerine entegre edebilirsiniz.
Yazının altına doğru, kütüphanenin sağladığı diğer fonksiyonları ve özel karakter yapımını görebilirsiniz.
16X2 Karakter LCD ekranların bazı modelleri üzerinde I2C devresi ile beraber gelmektedir bu sayede kalabalık kablo görüntüsü yerine 2 adet kablo ile veri aktarımı sağlanmaktadır. Daha önceki yazılarımızda I2C devresi olmayan modeller ile işlemler yaptık. Bu yazımızda hem I2C entegresi üzerinde gelen bir LCD ekranla hem de I2C devresi olmayan bir LCD ekran ile işlem yapacağız.
Önceki LCD Ekran yazılarımız
I2C, Inter-IC’nin kısaltmasıdır. Ve bir BUS türüdür. I2C, senkron, çoklu bağımlı, çoklu ana paket anahtarlamalı, tek uçlu bir seri veriyoludur. Aynı veriyoluna birden fazla çip bağlanabilir, Seri Veri Hattı (SDA) ve Seri Saat Hattı (SCL) kullanır. Diğer voltajlara sahip sistemlere izin verilmesine rağmen, kullanılan tipik voltajlar +5 V veya +3,3 V’dir. I2C protokolü hakkında daha fazla bilgi için buraya tıklayın.
Arduino UNO | I2C Devreli LCD Ekran |
---|---|
GND | GND |
5V | VCC |
Analog 4(SDA) | SDA |
Aanalog 5(SCL) | SCL |
Genelde bu adres, I2C devresinin arkasında yazar fakat bazen bu yazılandan farklı değerlerde olabilir, kullanılan direnç değeri bu adresi değiştirebilir bu yüzden program koduna geçmeden önce devre şemasındaki bağlantıyı yapıp, I2C adres tarama kodunu karta yükleyip çalıştırmanızı öneriyoruz.
I2C Tarayıcı kodu, I2C cihazlarının sayısını ve I2C cihazlarının adresini bulmak için kullanılır. Bu kodu kartınıza yükledikten sonra seri ekranı açarak adresi öğrenebilirsiniz. Eğer bağlantılar hatalı ya da I2C devresi bozuksa I2C cihazı bulunamaz.
Adres bulunduktan sonra “proje kodu” kısmındaki gerekli adresi değiştirmelisiniz.
Buradaki adres çoğu kart ile çalışmaktadır fakat, kontrol ederek kendi bulduğunuz adresi yazmanızı öneriyoruz.
Genel olarak başlangıç için oldukça yaygın kullanılan bu ekran, oldukça fazla bağlantı kablosu gerektirmektedir. Ayrıca ekranın parlaklığını ayarlamak bir potansiyometre ya da direnç ve arduino kodu üzerinden bir pine gerek çıkışı vererek ayarlanmaktadır.
Bu içeriğin bu bölümü, metin ve sayıları görüntülemenin temellerini kapsar. İkinci ksımda, özel karakterlerin nasıl görüntüleneceğini ve LiquidCrystal Arduino kütüphanesinin diğer işlevlerini nasıl kullanabileceğinizi daha ayrıntılı olarak ele alacağız.
Göreceğiniz gibi, bu ekranları kontrol etmek için oldukça fazla bağlantıya ihtiyacınız var. Bu nedenle onları arkaya monte edilmiş bir I2C arayüz modülü ile kullanabilirsiniz.
LCD’yi 4-bit modunda kullanacağız, yani D0-D3’e herhangi bir şey bağlamanıza gerek yok. R/W pimi toprağa bağlanır, bu pim DÜŞÜK çekecek ve LCD’yi YAZMA moduna ayarlayacaktır.
Arduino UNO | 16X2 LCD Ekran |
---|---|
GND | VSS |
5V VCC | VDD |
Boş ya da gerekli pin | V0 Pini: 10Ω Potansiyometre (ya da geliştirme kartı üzerinden farklı bir kablo ile güç sağlama) |
2 | RS |
GND | RW |
3 | E |
Sırayla | Sırayla D4-D7 |
5V VCC | A(Anot) |
GND | K(Katot) |
Ekranı test etmek için aşağıdaki yukarıda gösterildiği gibi bağlantıları yapmanız gerekecektir.
Çoğu LCD’de LED arka ışığı için yerleşik bir seri direnç bulunur. Bunu, pin 15’e (Anot) bağlı LCD’nin arkasında bulmalısınız. Ekranınızda direnç yoksa 5 V ile pin 15 arasında bir tane eklemeniz gerekecektir. Ω direnç kullanmak güvenli olacaktır, ancak bu değer ekranınızı biraz karartabilir. Arka ışığın maksimum akım derecesi için veri sayfasını kontrol edebilir ve bunu uygun bir direnç değeri seçmek için kullanabilirsiniz.
LCD’yi bağladıktan sonra, ekranın parlaklığını ayarlamanız gerekecektir. Bu, 10 kΩ potansiyometreyi saat yönünde veya saat yönünün tersine çevirerek yapılabilir ya da kod üzerinde dijital bir pine gerekli voltaj çıkışını ayarlayıp bu potansiyometre yerine bağlanabilir.
Basit bir şekilde ilk kullanımı böyle gerçekleştirebilirsiniz:
Kitaplığı ekledikten sonraki adım, LiquidCrystal sınıfının yeni bir örneğini oluşturmaktır. Bu, LiquidCrystal(RS E, d4, d5, d6, d7) işleviyle yapılır. Parametre olarak ekranı bağladığımız Arduino pinlerini kullanıyoruz. Ekranı ‘lcd’ olarak adlandırdığımızı unutmayın. ‘menu_display’ gibi isterseniz farklı bir isim verebilirsiniz.
LiquidCrystal Arduino kütüphanesi yararlı bulabileceğiniz birçok başka yerleşik işlev vardır. Aşağıda açıklama ve bazı kod parçacıklarıyla birlikte bunlara genel bir bakış bulabilirsiniz.
LCD ekranı temizler ve imleci ekranın sol üst köşesine (ilk satır ve ilk sütun) konumlandırır. Bir döngüde farklı sözcükleri görüntülemek için bu işlevi kullanabilirsiniz.
İmleci LCD’nin sol üst köşesine konumlandırır. Ekranı da temizlemek istiyorsanız clear() kullanın.
LCD imlecini görüntüler: yazdırılacak sonraki karakterin konumunda bir alt çizgi (çizgi).
LCD imlecini gizler. Aşağıdaki örnek, “cursor()”ın sonunda yanıp sönen bir imleç oluşturur.
Yanıp sönen blok stili bir LCD imleç oluşturur: yazdırılacak sonraki karakterin konumunda yanıp sönen bir dikdörtgen.
Blok stili LCD imleci devre dışı bırakır. Aşağıdaki örnek, yanıp sönen imleci 5 saniyeliğine görüntüler ve ardından 2 saniyeliğine devre dışı bırakır.
Bu fonksiyon LCD ekranı açar ve ekrana yazdırılan herhangi bir metni veya imleçleri görüntüler.
Bu işlev, LCD’ye yazdırılan tüm metinleri veya imleçleri kapatır. Metin/veriler LCD belleğinden silinmez. Bu, display() işlevi çağrıldığında yeniden gösterileceği anlamına gelir.
Aşağıdaki örnek, yanıp sönen bir metin efekti oluşturur.
Bu fonksiyon LCD’ye bir karakter yazmak için kullanılabilir. Daha fazla bilgi için aşağıdaki özel karakterlerin oluşturulması ve görüntülenmesiyle ilgili bölüme bakın.
Ekranın içeriğini (metin ve imleç) bir boşluk sola kaydırır. Bir kayan metin animasyonu oluşturmak için bu işlevi kodun döngü bölümünde delay() ile birlikte kullanabilirsiniz.
Ekranın içeriğini (metin ve imleç) bir boşluk sağa kaydırır.
Bu işlev, LCD’nin otomatik olarak kaydırılmasını açar. Bu, ekrana çıkan her karakterin önceki karakterleri bir boşluk öteye itmesine neden olur. Geçerli metin yönü soldan sağa ise (varsayılan), ekran sola kayar; geçerli yön sağdan sola ise, ekran sağa kayar. Bu, her yeni karakterin LCD’de aynı konuma çıktısının alınması etkisine sahiptir.
Aşağıdaki örnek, otomatik kaydırmayı sağlar ve LCD’nin (16,0) konumunda 0 ila 9 arasındaki karakterleri yazdırır.
LCD’nin otomatik kaydırılmasını kapatır.
Bu işlev, ekranın sola dayalı (varsayılan) gibi metnin imleçten sağa doğru akmasına neden olur.
Bu işlev, ekranın sağa hizalanmış gibi metnin imleçten sola akmasına neden olur.
createChar() işleviyle LCD’de özel karakterler oluşturmak ve görüntülemek mümkündür. Bu, özellikle standart ASCII karakter kümesinin parçası olmayan bir karakteri görüntülemek istiyorsanız kullanışlıdır.
Teknik bilgi: Hitachi HD LCD kontrol cihazını temel alan LCD’ler iki tür belleğe sahiptir: CGROM ve CGRAM (Karakter Üretici ROM ve RAM). CGROM, standart 8 bitlik karakter kodlarından tüm 5 x 8 noktalı karakter desenlerini oluşturur. CGRAM, kullanıcı tanımlı karakter kalıpları üretebilir.
5 x 8 noktalı ekranlar için, CGRAM 8 adede kadar özel karakter ve 5 x 10 noktalı ekranlar için 4 adede kadar yazabilir.
Aşağıdaki örnek, sekiz özel karakter (0 – 7 numaralı) oluşturur ve görüntüler.
Liquid Crystal Display(LCD) olarak geçen 16 sütün 2 satırdan oluşan ve mavi arkaplan ışıklı bir yazı ve karakter göstergesidir. Üzerinde 16 tane pin bulunmaktadır. Bacak bağlantılarına baktığımızda ;
VSSucu Gnd girişidir. 0 volt negatif gerilime bağlanır. VDD ucu 5 volt pozitif gerilime bağlanır. VE girişi Ekrandaki yazının netliğini ayarlamak için kullanılan giriştir. RS(Register Select) LCD ekranın ne yapacağını, register da bir deger olup olmadığını kontrol eder. R/W(Read/Write) pinlerin modlarını okuma veya yazma olarak değiştirmek için kullanılır. E(Enable) Pinleri okuma modunda aktif hale getirir. D0-D7 Bit bit aldığı değerleri okur. Buradan ekrana yazdırılacak yazılar bit bit gönderilir. LCD de okur. Devremiz görsel amaçlı olarak programda çizilmiş olup sayfaya eklenmiştir.
Devremizde LCD bacak bağlantıları:
LCD RS pin to digital pin 9
LCD Enable pin to digital pin 10
LCD D4 pin to digital pin 2
LCD D5 pin to digital pin 3
LCD D6 pin to digital pin 4
LCD D7 pin to digital pin 5
Malzemeler ve Tavsiye Ürün Linkleri
1 x Arduino UNO R3
1Kohm Potansiyometre
216lık LCD
Breadboard
Devre Programı
[php]
#include <LiquidCrystal.h>
LiquidCrystal lcd(9, 10, 2, 3, 4, 5);
void setup()
{
funduszeue.info(16, 2); //16 sütun 2 satır bir ekranımız olduğunu belirtir.
funduszeue.info("SAKARYA_UNIVERSITESI"); // Ekrana yazı yazdırır.
}
void loop()
{
int f;
for(f=1; 15>f; f++)
{
funduszeue.infosor(f, 1); //Ekranın alt satırına yazı yazdırmak için kullanılır.
delay(); //Gecikme.
funduszeue.info("ROBOTURKA"); // Ekrana yazı yazdırır.
}}[/php]
Devre Videosu
Merhaba arkadaşlar,
Bu yazıda, Arduino ve LCD bağlantılarının nasıl yapılacağını anlatacağım ve size programlayabileceğiniz bütün farklı yolları göstereceğim.
Metni nasıl yazdıracağınızı, metni nasıl kaydıracağınızı, özel karakterleri nasıl yazacağınızı, metni nasıl kırpacağınızı ve metni nasıl konumlandıracağınızı göstereceğim. Bu bilgiler output alacağınız herhangi bir proje için harika olacak ve bu sayede projenizi daha interaktif ve ilginç bir hale getirebileceksiniz.
Kullanacağımız ekran çok uygun bir fiyata alabileceğiniz 16×2 LCD ekran. Ekranın 162 olarak adlandırılması LCD’nin 2 satıra sahip olduğu ve satır başına 16 karakter görüntüleyebileceği anlamına geliyor. Yani ekran aynı anda 32 adet karakter görüntüleyebiliyor. Bunun dışında kaydırma yaparak 32 karakterden fazlasını da görüntüleyebilirsiniz.
Bu yazıdaki kodlar, standart Hitachi HD sürücüsünü kullanan LCDler için yazılmıştır. LCDnizin 16 iğnesi varsa, muhtemelen Hitachi HD sürücüsüne sahiptir.
Kullandığım LCDdeki pinlerin diyagramını aşağıda bulacaksınız. LCD ekranımızda 16 adet pin var. Kullanacağımız ekrana göre pinler ekranın üst, alt veya her iki tarafında da yer alabilir. Çok nadir olarak bazı ekranlarda ise arka aydınlatma ışığı bulunmadığından 14 adet pin yer almaktadır. 15 ve 16 numaralı pinler, ekran aydınlatması bulunan ekranlarda arka ışığı yakmak için kullanılır. Her bir pinden Arduinoya olan bağlantılar aynı olacaktır, ancak pinleriniz LCD üzerinde farklı şekilde düzenlenebilir. Bunun için kullandığınız LCD’nin datasheet’ine bakabilirsiniz.
Ayrıca breadboard’a bağlamadan önce LCDnize 16 pinlik bir başlık lehimlemeniz gerekebilir. LCDyi Arduinonuza bağlamak için aşağıdaki şemayı takip edin:
Yukarıdaki diyagramdaki direnç, arka ışık parlaklığını ayarlar. Tipik bir değer olan Ohm direnç kullandım ama diğer değerler de işe yarayacaktır. Daha küçük dirençler arka ışığı daha parlak hale getirir.
Potansiyometre ekran kontrastını ayarlamak için kullanılır. Ben genellikle 10K Ohm potansiyometre kullanıyorum ancak diğer değerler de çalışır.
Ekranla ilgili tüm teknik bilgileri içeren 16×2 LCDnin datasheet’ini incelemek isterseniz buradan indirebilirsiniz.
Aşağıdaki kodların tamamı Arduino IDE ile önceden yüklenmiş olarak gelen LiquidCrystal kütüphanesini kullanır. Bir kütüphanenin kullanılabilmesi için programa dahil edilmesi gerekir. Aşağıdaki kodlardaki 1. Satır olan #include <LiquidCrystal.h> komutu bu işe yarar. Bir programda bir kütüphane eklediğinizde, kütüphanedeki tüm kod, programınızın koduyla birlikte Ardunioya yüklenir. Şimdi bağlantılarınızı tamamladıysanız programlamaya başlayabiliriz. Basit bir test programıyla başlayalım. Bu program ekrana “hello, world!” yazdıracaktır. Aşağıdaki kodu Arduino’ya yükleyelim:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { }LiquidCrystal kütüphanesinin kullanabileceğimiz 19 farklı fonksiyonu vardır. Bu fonksiyonların yazının konumunu değiştirme, ekran boyunca yazıyı kaydırma veya görüntüyü açıp kapatmak gibi işlevleri vardır. Şimdi bu fonksiyonları kısaca inceleyelim:
İşlevi Arduinonun LCDye bağlanmak için kullandığı pinleri ayarlar. LCDyi kontrol etmek için Arduinonun dijital pinlerinden herhangi birini kullanabilirsiniz. Arduino pin numaralarını bu sırayla parantez içine koyunuz: LiquidCrystal (RS, E, D4, D5, D6, D7). RS, E, D4, D5, D6, D7 LCD pinleridir.
Örneğin, LCD pini D7nin Arduino pin 12ye bağlanmasını istediğinizi varsayalım. D7nin yerine şu şekilde “12” koyunuz: LiquidCrystal (RS, E, D4, D5, D6, 12). Bu işlev, programın void setup () bölümünün önüne yerleştirilmelidir.
Bu işlev LCDnin boyutlarını ayarlar. Programın void setup () bölümünde herhangi bir LiquidCrystal işlevinin önüne yerleştirilmelidir. Satır ve sütunların sayısı funduszeue.info (sütunlar, satırlar) olarak belirtilir. 16×2 LCD için, funduszeue.info (16, 2) kullanmanız gerekiyor ve 20×4 LCD için funduszeue.info (20, 4) kullanmanız gerekiyor.
Bu işlev, LCDde halihazırda görüntülenen herhangi bir metni veya veriyi siler. funduszeue.info ( ) ile funduszeue.info ( ) öğesini ve void loop ( ) bölümünde delay ( ) işlevini kullanırsanız, basit bir yanıp sönen metin programı oluşturabilirsiniz:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); } void loop() { funduszeue.info("hello, world!"); delay(); funduszeue.info(); delay(); }Bu kodu Arduinolarınıza yüklediğinizde LCD ekranınız aşağıdaki gibi gözükecektir:
Bu işlev, imleci ekranın sol üst köşesine yerleştirir ve sonraki metni bu konuma yazdırır. Örneğin, aşağıdaki kod “hello, world!” metninin ilk üç harfini X ile değiştirir:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { funduszeue.info(); funduszeue.info("XXX"); }Ekranınız şu şekilde gözükecektir:
Benzer, ancak funduszeue.info ( ) dan daha kullanışlıdır. Bu işlev, imleci (ve herhangi bir yazılı metni) ekranın herhangi bir yerine yerleştirir. Programınızın void setup ( ) veya void loop ( ) bölümünde kullanılabilir.
İmleç konumu, funduszeue.infosor (sütun, satır) ile tanımlanır. Sütun ve satır koordinatları sıfırdan başlar (sırasıyla ve ). Örneğin, yukarıdaki “hello, world!” programının void setup ( ) bölümünde funduszeue.infosor (2, 1) kullanılarak, “hello, world!” alt satıra yazdırılır ve sağa iki alan kaydırılır.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.infosor(2, 1); funduszeue.info("hello, world!"); } void loop() { } Yukarıdaki kodu Arduinoya yüklediğinizde ekranınız aşağıdaki gibi gözükecektir:
LCDye farklı tipte veri yazmak için bu işlevi kullanabilirsiniz, örneğin bir sıcaklık sensöründen okuma veya bir GPS modülünden gelen koordinatlar. Kendiniz oluşturduğunuz özel karakterleri yazdırmak için de kullanabilirsiniz. Programınızın void setup ( ) veya void loop ( ) bölümünde funduszeue.info ( ) öğesini kullanabilirsiniz.
Bu işlev, LCDye metin yazdırmak için kullanılır. Programın void setup () bölümünde veya void loop () bölümünde kullanılabilir.
Harfleri ve sözcükleri yazdırmak için, metnin etrafına tırnak işaretleri (” “) yerleştirin. Örneğin; hello, world!’ü yazdırmak için yukarıda funduszeue.info (“hello,world!”) kullanmıştık.
Sayıları yazdırmak için tırnak işaretleri gerekmez. Örneğin; u yazdırmak için funduszeue.info () yazabilirsiniz.
funduszeue.info ( ); sayıları ondalık, ikili, onaltılık ve sekizlik bazlarda yazdırabilir. Örneğin:
Bu işlev görünür bir imleç oluşturur. İmleç, LCDye yazdırılacak bir sonraki karakterin altına yerleştirilmiş yatay bir çizgidir.
funduszeue.infoor ( ) işlevi imleci kapatır. funduszeue.info ( ) ve funduszeue.infoor ( ) birçok metin giriş alanında gördüğünüze benzer yanıp sönen imleci yazdırmak için void loop ( ) bölümünde birlikte kullanılabilir.
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { funduszeue.info(); delay(); funduszeue.infoor(); delay(); }Yukarıdaki kodu yüklediğinizde ekranınız şu şekilde gözükecektir:
İmleçler, funduszeue.infosor ( ) işleviyle ekranın herhangi bir yerine yerleştirilebilir. Bu kod “hello, world!” deki ünlem işaretinin hemen altına yanıp sönen bir imleç yerleştirir:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { funduszeue.infosor(12, 1); funduszeue.info(); delay(); funduszeue.infosor(12, 1); funduszeue.infoor(); delay(); } Bu işlev, döngü başına yaklaşık milisaniyede bir yanıp sönen blok stili bir imleç oluşturur. Bunu void loop ( ) bölümünde kullanın. funduszeue.infok ( ) işlevi yanıp sönen blok imlecini devre dışı bırakır.
Bu işlev, LCD ekrana yazdırılmış herhangi bir metin veya imleci açar. funduszeue.infolay ( ) işlevi, LCD’nin belleğinden silmeden LCD’ye yazdırılan herhangi bir metni veya imleci kapatır.
Bu iki işlev, yanıp sönen bir metin efekti oluşturmak için void loop ( ) bölümünde birlikte kullanılabilir. Bu kod “hello, world!” metnini açıp kapatacak:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { funduszeue.infoy(); delay(); funduszeue.infolay(); delay(); }Bu işlev, LCDye yazdırılan her şeyi alır ve sola taşır. Bunu takiben bir gecikme komutu ile void loop ( ) bölümünde kullanılmalıdır. İşlev, ilk karaktere geri dönmeden önce metni 40 alan sola taşır. Bu kod, hello, world! metnini, karakter başına bir saniyede olmak üzere sola taşır:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.info("hello, world!"); } void loop() { funduszeue.infoDisplayLeft(); delay(); }Bu işlev, funduszeue.infoDisplayLeft ( ) gibi davranır ancak metni sağa taşır.
Bu işlev bir metin dizisi alır ve dizinin karakter sayısının artışlarıyla sağdan sola kaydırır. Örneğin; 3 karakter uzunluğunda bir metin diziniz varsa, her adımda metni 3 alan sola kaydırır:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); } void loop() { funduszeue.infosor(0, 0); funduszeue.inforoll(); funduszeue.info("ABC"); delay(); }Bu kodu çalıştırdığınızda ekranınız aşağıdaki gibi gözükecektir:
funduszeue.infoDisplay ( ) işlevleri gibi; metin, tekrarlanmadan önce en fazla 40 karakter uzunluğunda olabilir. İlk bakışta, bu işlev kullanışsız gözüküyor olabilir, ancak özel karakterlerle animasyon oluşturmak için çok yararlı olabilir.
funduszeue.infoscroll ( ), funduszeue.inforoll ( ) işlevini kapatır. Kayan metin veya animasyon dizileri oluşturmak için void loop ( ) bölümünde funduszeue.inforoll ( ) işlevinden önce veya sonra bu işlevi kullanabilirsiniz.
Bu işlev, metnin ekrana yazdırıldığı yönü ayarlar. Varsayılan mod, funduszeue.infoRight ( ) komutunu kullanarak soldan sağa doğrudur, ancak metnin ters yönde yazılışının yararlı olduğu bazı durumlar bulabilirsiniz:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { funduszeue.info(16, 2); funduszeue.infosor(12, 0); funduszeue.infooLeft(); funduszeue.info("hello, world!"); } void loop() { }Bu komut kendi özel karakterlerinizi oluşturmanıza izin verir. 16×2 LCDnin her bir karakterinin 5 piksel genişliği ve 8 piksel yüksekliği vardır. Tek bir programda 8 farklı özel karakter tanımlanabilir. Kendi karakterlerinizi tasarlamak için, özel karakterinizin ikili karakter matrisini LCD karakter jeneratöründen yapmanız veya kendiniz haritalamanız gerekir. Aşağıdaki kod bir derece sembolü (°) oluşturur:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte customChar[8] = { 0b, 0b, 0b, 0b, 0b, 0b, 0b, 0b }; void setup() { funduszeue.infoChar(0, customChar); funduszeue.info(16, 2); funduszeue.info((uint8_t)0); } void loop() { }Normal şartlarda arduino ile 16*2 lcd ekran kullanmak istersek, haberleştirmek için 8 adet kablo bağlamamız gerekiyor, devre şemasında göründüğü gibi.
Bu durum devre şemasını karışık yapmakla kalmıyor projede yer sıkıntısına da neden oluyor. Aynı şekilde arduino da fazladan pin işgal etiği için proje yaparken diğer komponentlere pin yetersiz kalıyor. Bu sorunları çözmek için I2C haberleşme protokolü kullanılıyor. Lcd ekranda bu protokolü kullanabilmemiz için üretilmiş olan modüller mevcut. Bu modüler bazen lcd ekranın üzerinde lehimli olarak satılmakta bazen ise ayrıyeten satılmaktadır.
Lcd ekranı normalde 8 adet pin ile kullanırken, bu modül sayesinde 4 adet pin ile lcd ekranı kullanabiliyoruz. Bu pinler sırasıyla GND, VCC, SDA ve SCL pinleridir.
Arduino modeline göre I2C pinleri farklılık gösterebilir, aşağıda bulunan tablodan bu pinleri öğrenebilirsiniz
Arduino türü | SDA pini | SCL pini |
Arduino Uno | A4 | A5 |
Arduino Mega | 20 | 21 |
Arduino Leonardo | 2 | 3 |
Arduino Due | 20 | 21 |
Arduino Nano | A4 | A5 |
Arduino ile ı2c modülü kullanabilmek için kütüphane yüklemeniz gerekiyor. Popüler kütüphanelerden birini sizin için eklemdim, indir butonuna basarak kütüphaneyi indirebilirsiniz.
İndirdiğiniz Kütüphaneyi arduino ideye eklemek için “Taslak > Library ekle > Zıp Kitaplığı Ekle…“ Segmelerini takip ederek kütüphane yöneticisini açalım.
Açılan pencerede indirdiğiniz zıp dosyasını bulup seçin. Zıp dosyasını seçmeniz yeterli olacaktır, otomatik olarak kütüphane arduino ıde’ye eklenecektir.
Kütüphane dosyanız bu şekilde yüklendiği zaman sol alt köşede “yüklendi” yazısı çıkması gerekir.
Kütüphanenin yüklendiğinden emin olmak için manuel kontrol yapabilirsiniz.
Manüel kontrol nasıl yapılır bilmiyorsanız, Arduino ideye nasıl kütüphane yüklenir konulu blog yazımızıburdan okumanızı tavsiye ederim.
Devre şemasındaki gibi bağlantıyı yapıp kütüphaneyi de yüklediyseniz, sırada lcd ekrana yazı yazmak var.
Lcd ekrana yazı yazmak için örnekteki kodu kullanabilirsiniz.
////// robotistan //// #include <LiquidCrystal_I2C_AvrI2C.h> LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2); void setup() { funduszeue.info(); funduszeue.infoght(); funduszeue.infosor(0,0); funduszeue.info("Hello, world!"); //İlk satıra yazalım funduszeue.infosor(0,1); funduszeue.info("Maker blog"); //İkinci satıra yazalım } void loop() { }Yukarıdaki kodu çalıştırdığımızda İlk satıra Hello World, ikinci satıra ise Maker blog yazacaktır.
Ancak ilk çalıştırmada ekranda hiçbir şey gözükmemiş olabilir. I2c modülünün arka kısmında bulunan mavi renkli potansiyometreyle oynayarak ekranın kontrasını ayarlayıp ekranda yazının gözükmesini sağlayabilirsiniz.
Bütün bunları yapmanıza ramen ekranda hala bir şey gözükmüyor ise, kodda belirttiğimiz ı2c arabirimi yanlış olabilir.
Genelde ı2c arabirimi 0x27 olarak gelmektedir, fakat bazen farklılık gösterebilir. Bu yüzden proje çalışmadı diye üzülmeyin.
Kendi modülünüzün arabirimini öğrenmeniz için alt tarafta bulunan kodu sizinle paylaştım. Kodu arduinoya yükleyerek serial monitörde ekranınızın arabirim adresini görebilirisiniz.
#include <Wire.h> boolean DeviceFound = false; byte error, address; void setup() { funduszeue.info(); funduszeue.info(); funduszeue.infon("\nI2C Araniyor"); for(address = 0; address <= ; address++ ) { funduszeue.inforansmission(address); error = funduszeue.infonsmission(); if (error == 0) { funduszeue.info("I2C cihaz bulundu. Adresi: 0x"); if (address<16) funduszeue.info("0"); funduszeue.infon(address,HEX); DeviceFound = true; break; } else if (error==4) { funduszeue.info("Bilinmeyen hata olustu. Adres: 0x"); if (address<16) funduszeue.info("0"); funduszeue.infon(address,HEX); } } if (DeviceFound == false) funduszeue.infon("Herhangi bir bagli I2C bulunamadi\n"); else funduszeue.infon("Tamamlandi. Kolay gelsin.\n"); } void loop() { }Kodu derledikten sonra arduinoya yükleyin ve serial monitörü açın. Bu işlemeri doğru yaptıysanız serial monitörünüz aynen bu şekilde gözükecektir.
Serial monitörde gördüğünüz 0x27 veya benzeri adresi Arduino kodunuzda LCD sınıfın tanımında örnekteki gibi yazmanız gerekecek.
// Parametreler: (Adres, LCD satır karakter sayısı, LCD satır sayısı) LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);Her şeyi doğru yaptıysanız ekranınıza yazı gözükecektir.
16×2 LCD ile yapabileceğiniz çok güzel şeyler var. Bu işlevlerden bazılarını birleştirmeyi denemenizi öneriyorum. 🙂 Sorularınızı sormaktan çekinmeyin lütfen. Görüşmek üzere.
çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası