Merhabalar. Bugün sizlerle Arduino’muza 16×2 karakter LCD ekran bağlayacağız.

Gerekli malzemeler:

Bu uygulamamızda LCD ekrana yazı yazdıracağız. İki kısımda ele alacağımız bu uygulamada ilk önce LCD bağlantılarını ve örnek kodu;  bir sonraki adımda ise çeşitli sensörlerden elde edeceğimiz bilgileri ekrana yazdırmayı yapacağız.

LCD ekranımızda 16 adet pin bulunmakta. 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 ışığı yakmak için kullanılır.

Bağlantı şemamız:

Devre şeması 26/01/2017 tarihinde güncellenmiştir.

Arduino programımızda LCD ekran için örnek kod mevcut. Bu kodu açmak için şu sırayı takip etmemiz gerekiyor:

Dosya > Örnekler > LiquidCrystal > HelloWorld

Bu kod, ekranın ilk satırına “hello, world!”, ikinci satıra ise Arduino’ya enerji verildiğinden itibaren geçen süreyi saniye cinsinden yazıyor. Eğer ekranınızda herhangi bir görüntü alamıyorsanız, potansiyometreyi çevirerek ekranın kontrastını değiştirebilirsiniz.

Bir sonraki uygulamamızda da Arduino ve LCD ekran ile sıcaklık ölçüm uygulaması yapacağız. Bu uygulamayı da denemek isterseniz, bağlantılar aynı olacağından devreyi sökmek istemeyebilirsiniz 🙂

54 Yorumlar

  1. Öncelikle hazırlamış olduğunuz site için teşekkürler. Şunu söylemek istiyorum Sitedeki projelerin çoğundaki resimler açılmıyor bunu çözebilirseniz çok güzel olur.
    Teşekkürler.

    • Kubilay Bey, biz teşekkür ederiz. Blog’umuzdaki görselleri düzenleme çalışmalarımız devam etmektedir, herhangi bir problemle karşılaşırsanız lütfen bize bildirmekten çekinmeyiniz.

  2. lsd ekranı denemek istiyorum ben ekranın arkasına shield alıp bağladım bende sadeçe gnd vçç sda ve sçl uçları bulunuyor gnd ve vçç yi bağlıyabilirim sda ve sçl nereye bağlanaçak bu konuda yardım bekliyorum
    saygılar

    • Merhabalar, SDA pinini A4’e, SCL’yi A5’e bağlamanız gerekli. Ekran için de bu kütüphaneyi kullanabilirsiniz.

  3. merhaba.elektroniğe yeni başladım .böyle güzel öğretici site kurduğunuz için çok teşekkür ederim.benim için çok değerli.hocam ardunyo ile 2 eksen güneş takip sistemi çalışması yayınlarmısınız.şimdiden teşekkür ederim.heyecanla bekliyorum. not : gerekli malzemeleri sizden temin edebilirmiyiz.

  4. merhaba burda lcd nin 15. ve 16 ekran aydınlatma pinleri direk karşıya bağlanmış bir yanlışlık olmalı.çünkü direk karşılarına bağlarsam aydınlatma alamıyorum

  5. Ben şemadan lcd ekranı breadbordda + kısmına bağlıyoruz gibi anladım. Fakat ben oraya bağlamaya çalıştığımda giriş yerleri 5 5li gruplandırılıp araları boş bırakıldıkları için takamadım. Nasıl takıcağımı söylerseniz çok memmnun olurum. Teşekkürler.

    • Breadboard’un bahsettiğiniz 5’erli gruplandırılmış kısmı güç bağlantıları içindir. Ekranı alt kısımdaki aralarında boşluk olmayan kısma bağlamanız gerekir.

  6. Potansiyometre bağlamak şart mı?
    10k olması şart mı?
    potansiyometre bağlama istemiyorsak ne yapmalıyız?
    lütfen cevap verin önemli bir konu çünkü 🙂

    • 2 adet 4.7kOhm direnç ile bir gerilim bölücü oluşturarak bağlantı yapabilirsiniz: İki direnci seri bağlayın. Dirençlerden birinini ucunu VCC’ye, yani 5V’a, diğerinin ucunu GND’ye, birleştikleri noktadan da kontrast pinine bağlantı yapın.

  7. ya ben lcd ekran ile yaptığım projenin gaz değeri ölçmek istiyorumm bunun için kod ve bağlantı nası olacak

    • Öncelikle ölçmek istediğiniz gaz tipine göre bir gaz sensörü tercih etmeniz gereklidir. Ölçtüğünüz gaz değerini de bu dersten faydalanarak LCD ekrana kolayca yazdırabilirsiniz.

  8. Hocam benim ödevim arduino ile basınç göstergesi hocamız benden hem basınç hemde deniz sevişmeyi yüksekliğini ölçmemi istedi bunun için kullanacağım malzemeler nelerdir ve nasıl yapabilecegim hakkında bilgi verirseniz çok sevinirim

  9. merhabalar

    aurdino mega da kod yazdım tft ekrana yazdırdığım görüntüler döngü sırasında en başa dönüyor ve ekran siliniyor tekrar yazılıyor ben sadece ekranın sabit olmasını değişkenlerin değişmesini istiyorum nasıl yapabilirim

  10. 3,2″ tft lcd ekran kullanıyorum tasarım ile iligil sıkımtım yok döngü olayı sıkıntı yaratıyor ekrar siliniyor yeniden başlıyor

    • İstediğiniz takdirde LCD’nin arka aydınlatma pinlerinden birisine 220 ohm değerinde bir direnci seri bağlayabilirsiniz.

  11. potansiyometrem 5k’lık..enerji geliyor ekran mavi ve kareler var ama yazılar hiç gelmiyor. potansiyometre 5k olduğu için mi..illa ki 10k mı olması lazım. teşekür ederim.

    • 10k yerine 5k potansiyometre kullanmanız sadece sizin kontrastı ne kadar hassas ayarlayabileceğinizi değiştirir. 5k potansiyometre de kullanabilirsiniz.

  12. Bir diğer sorum da bu Kerem Bey..benim takacağım 16×2 lik akran da hem sıcaklık hem de nabiz Dalgası nasıl görüntülenecek..bunu tam düşünemiyorum

    • Nabzı dalga olarak görebilmeniz için bir grafik LCD’ye ihtiyacınız vardır. 16×2 karakter LCD ile bu işlemi yapamazsınız.

  13. Nabiz bilgisini grafiksel olarak yani bir osiloskop çıktısı olarak pc de gorüntüleyececegim..aynı anda sıcaklık bilgisini de PC ekranında görüntüleyebilir miyim..birde nabiz bilgisi için Ardunio nun A0 girişini kullanacağım..sıcaklık girişini de A1 e versem olur mu..

    • İki adet analog girişi aynı anda kullanabilmeniz mümkündür. Nabız grafiği için ise Arduino IDE içerisinde yer alan Serial Plotter özelliği mevcuttur.

  14. devreyi kurdum lcd ekran yanması gerekirken potansiyometreyi hareket ettirince arduino kartının üzerindeki yeşil ve turuncu ledlerin parlaklıkları değişiyor nasıl çözebilirim teşekkürler…

  15. Bağlanıyı tamamen yaptım, hello wold dosyasını yükledim ama LCD ekranda sadece ışık yanıyor. Sorun ne olabilir ?

    • Yazıda da belirttiğim gibi

      Arduino programımızda LCD ekran için örnek kod mevcut. Bu kodu açmak için şu sırayı takip etmemiz gerekiyor:

      Dosya > Örnekler > LiquidCrystal > HelloWorld

  16. benim bi sorum olacak dı ben lcd panele değiken yazılar yazdırdım ve bunlara bi delay verdim bi kaçtane de buton ekledim fakat butonun durumunu öğrenmek için loop döngüsünü beklemek zorunda kalıyorum ve o da delay sürelerinden dolayı çok geç durumunu öğreniyorumr hatta bazen hiç öğrenemiyorum sizce bunu nasıl çözebilirim.

    • Bahsettiğiniz işlem, delay() fonksiyonu kullanıldığında mikrokontrolcünün hiçbir işlem yapmadan (girişleri okumak ta dahil) beklemesidir. Bu durumun önüne geçmek için kesme (interrupt) kullanabilir, veya bekleme işlemini delay() fonksiyonu olmadan yapmanın farklı yöntemlerini deneyebilirsiniz. Interrupt kullanımı için sitemizdeki Arduino’da Kesme İşlemleri yazımızı okuyabilir, delay() fonksiyonu kullanmadan bekleme yapmak için ise buradan erişebileceğiniz sayfayı okumanızı tavsiye ederim.

  17. merhaba , ben bu ekranı değil de daha büyük olan tg12864b kodlu bir lcd ekran kullanmaya çalışıyorum . bildiğiniz üzere 20 tane pini var bu lcdnin.
    1- vss 5V
    2- vdd GND
    3- V0 ekran parlaklığı için potansiyometre ayar pini
    4- rs arduino pin 12
    5- rw boş
    6- en arduino pin 11
    7/8/9/10 – db0/db1/db2/db3 boş
    11- db4 arduino pin 4
    12- db5 arduino pin 5
    13- db6 arduino pin 6
    14- db7 arduino pin 7
    15- cs1 ??
    16- cs2 ??
    17- rst boşta
    18- vee boşta
    19- A 5V
    10- K GND
    Şeklinde bağlantı yaptım . Buradaki pinlerden cs1 , cs2 nedir? ve rw, rst,vee,db0,db1,db2,db3,cs1,cs2 pinlerinin bağlantı yapılmaması doğru mudur?
    birde kullandığım kod :

    #include

    LiquidCrystal lcd(12,11,4,5,6,7); // LiquidCrystal(rs, enable, d4, d5, d6, d7)

    void setup()
    {
    lcd.begin(16,1);
    lcd.clear();
    lcd.print(“Hello”);
    }

    void loop()
    {
    }
    bu kullandığım kod. Fakat araştırma yaptığım zaman https://www.arduino.cc/en/Reference/LiquidCrystalConstructor bu linkte görüldüğü gibi :
    LiquidCrystal(rs, enable, d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
    LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
    bu kod satırlarından hangisine göre kod yazılması gerekli pek anlamadım açıkçası. Ve şu ana kadar hepsini denedim ama bağlantı sonucu arduinonun rx tx pinlerinde yanma sönme olmuyor yani ben verinin aktarılamadığını düşünüyorum ? Bana yardımcı olabilirseniz şok sevineceğim lütfen .

    • LiquidCrystal lcd(12,11,4,5,6,7); şeklinde yapmış olduğunuz tanımlama doğrudur. Sırasıyla ekranın RS, E, D4, D5, D6 ve D7 pinlerini tanımlıyorsunuz. Verdiğiniz bağlantı tablosuna göre bu doğru görünüyor. Fakat kodu yüklerken Arduino üzerindeki RX ve TX LED’leri yanıp sönmüyorsa sorununuz LCD kaynaklı olmayabilir. RX ve TX pinlerine takılı herhangi bir harici bağlantı varsa söküp tekrar yüklemeyi deneyin.

  18. kod konusunu düşündüm fakat bu tür lcdlere başka nasıl bir kod yüklenebilir ki ? ne söylemek istediğinizi anlayamadım , belki link var ise paylaşır mısınız ?yani hazır kütüphanedeki bu kodu kullanmak dışında bir çözüm var mı ? kullanılabilecek komutlar lcd.begin, LiquidCrystal, lcd.print gibi komutları kullanmak gerekli değil mi bu tip lcd ekranlarda ? bir de rx pinini gndye verdim ama doğrudur umarım ?

  19. Arkadaşlar kimsenin bilgisi yok mu ? alfanümerik ve grafik lcdler varmış . Benim kullandığım grafik lcd olduğu için mi liquidcyrstal kodu çalışmıyor?MGLCD kütüphanesini mi denemeliyim??

      • evet haklısınız onu farkettikten sonra MGLCD kütüphanesini denedim. MGLCD kütüphanesini kullanmam gerekli diye düşünüyorum , doğru mu düşünüyorum?
        Kullandığım kod ise şu :
        #include
        MGLCD myGLCD(2,3,4,5,6,7,8,9,10,11,12,13); //MGLCD myGLCD(D0,D1,D2,D3,D4,D5,D6,D7,A0,RW,EP,RST);

        extern uint8_t SmallFont[];

        void setup()
        {
        myGLCD.initLCD();

        }
        void loop()
        {
        myGLCD.setFont(SmallFont);
        myGLCD.print(“hello”);

        }
        Burada A0 pini RS, EP pini Enable diye bağlantı yaptım. Fakat bir sonuç alamadım .Yanlışımı bulamıyorum hala .Sorun kütüphane kaynaklı olabilir diye düşünüyorum , siz ne dersiniz ?
        Bir de u8glib diye bir kütüphane var o kütüphane OLED ekranda mı kullanılması gereken bir kütüphane ? Grafik LCD için başka Arduinoda hangi kütüphaneler kullanılabilir ?

      • Bir de ks0108 diye bir kütüphane var o kütüphane de Grafik LCD’lerde kullanılabilecek bir kütüphane mi ? Yani bence temel sorun grafik LCD de hangi kütüphanelerin kullanılacağı bilginiz var ise paylaşır mısınız ?

  20. Herşeyi yaptım ekranda ışık var kareler gözüküyor ama yazıyı yazmıyor.
    unable to rename ‘core\core.a’; reason: File exists gibi bir hata veriyor ama hep vermiyor bazen veriyor.

CEVAP VER