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 16×2 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 HD44780 sürücüsünü kullanan LCD’ler için yazılmıştır. LCD’nizin 16 iğnesi varsa, muhtemelen Hitachi HD44780 sürücüsüne sahiptir.

Gerekli malzemeler:

LCD ve Arduino Bağlantıları

Kullandığım LCD’deki 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 Arduino’ya 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 LCD’nize 16 pinlik bir başlık lehimlemeniz gerekebilir. LCD’yi Arduino’nuza bağlamak için aşağıdaki şemayı takip edin:

Arduino ve 16×2 LCD Ekran Bağlantı Şeması

Yukarıdaki diyagramdaki direnç, arka ışık parlaklığını ayarlar. Tipik bir değer olan 220 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 LCD’nin datasheet’ini incelemek isterseniz buradan indirebilirsiniz.

Arduino Programlama

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 Ardunio’ya 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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {

}

LCD Ekranınız şu şekilde gözükmelidir:

LCD Görüntüleme Seçenekleri

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:

LiquidCrystal ( )

İş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: LiquidCrystal (RS, E, D4, D5, D6, D7). RS, E, D4, D5, D6, D7 LCD pinleridir.

Örneğin, LCD pini D7’nin Arduino pin 12’ye bağlanmasını istediğinizi varsayalım. D7’nin 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.

lcd.begin ( )

Bu işlev LCD’nin 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ı lcd.begin (sütunlar, satırlar) olarak belirtilir. 16×2 LCD için, lcd.begin (16, 2) kullanmanız gerekiyor ve 20×4 LCD için lcd.begin (20, 4) kullanmanız gerekiyor.

lcd.clear ( )

Bu işlev, LCD’de halihazırda görüntülenen herhangi bir metni veya veriyi siler. lcd.print ( ) ile lcd.clear ( ) öğ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() {
lcd.begin(16, 2);
}

void loop() {
lcd.print("hello, world!");
delay(500);
lcd.clear();
delay(500);
}

Bu kodu Arduino’larınıza yüklediğinizde LCD ekranınız aşağıdaki gibi gözükecektir:

lcd.home ( )

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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
lcd.home();
lcd.print("XXX");
}

Ekranınız şu şekilde gözükecektir:

lcd.setCursor ( )

Benzer, ancak lcd.home ( ) ‘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, lcd.setCursor (sütun, satır) ile tanımlanır. Sütun ve satır koordinatları sıfırdan başlar (sırasıyla 0-15 ve 0-1). Örneğin, yukarıdaki “hello, world!” programının void setup ( ) bölümünde lcd.setCursor (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() {
lcd.begin(16, 2);
lcd.setCursor(2, 1);
lcd.print("hello, world!");
}

void loop() {

}

Yukarıdaki kodu Arduino’ya yüklediğinizde ekranınız aşağıdaki gibi gözükecektir:

lcd.write ( )

LCD’ye 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 lcd.write ( ) öğesini kullanabilirsiniz.

lcd.print ( )

Bu işlev, LCD’ye 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 lcd.print (“hello,world!”) kullanmıştık.

Sayıları yazdırmak için tırnak işaretleri gerekmez. Örneğin; 123456789’u yazdırmak için lcd.print (123456789) yazabilirsiniz.

lcd.print ( ); sayıları ondalık, ikili, onaltılık ve sekizlik bazlarda yazdırabilir. Örneğin:

  • lcd.print (100, DEC) “100” yazar.
  • lcd.print (100, BIN) “1100100” yazar.
  • lcd.print (100, HEX) “64” yazar.
  • lcd.print (100, OCT) “144” yazar.
lcd.Cursor( )

Bu işlev görünür bir imleç oluşturur. İmleç, LCD’ye yazdırılacak bir sonraki karakterin altına yerleştirilmiş yatay bir çizgidir.

lcd.noCursor ( ) işlevi imleci kapatır. lcd.cursor ( ) ve lcd.noCursor ( ) 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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
lcd.cursor();
delay(500);
lcd.noCursor();
delay(500);
}

Yukarıdaki kodu yüklediğinizde ekranınız şu şekilde gözükecektir:

İmleçler, lcd.setCursor ( ) 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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
lcd.setCursor(12, 1);
lcd.cursor();
delay(500);
lcd.setCursor(12, 1);
lcd.noCursor();
delay(500);
}

lcd.blink ( )

Bu işlev, döngü başına yaklaşık 500 milisaniyede bir yanıp sönen blok stili bir imleç oluşturur. Bunu void loop ( ) bölümünde kullanın. lcd.noBlink ( ) işlevi yanıp sönen blok imlecini devre dışı bırakır.

lcd.display ( )

Bu işlev, LCD ekrana yazdırılmış herhangi bir metin veya imleci açar. lcd.noDisplay ( ) 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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
lcd.display();
delay(500);
lcd.noDisplay();
delay(500);
}
lcd.scrollDisplayLeft ( )

Bu işlev, LCD’ye 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() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}

void loop() {
lcd.scrollDisplayLeft();
delay(1000);
}

lcd.scrollDisplayRight( )

Bu işlev, lcd.scrollDisplayLeft ( ) gibi davranır ancak metni sağa taşır.

lcd.autoscroll( )

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() {
lcd.begin(16, 2);
}

void loop() {
lcd.setCursor(0, 0);
lcd.autoscroll();
lcd.print("ABC");
delay(500);
}

Bu kodu çalıştırdığınızda ekranınız aşağıdaki gibi gözükecektir:

lcd.scrollDisplay ( ) 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.

lcd.noAutoscroll( )

lcd.noAutoscroll ( ), lcd.autoscroll ( ) işlevini kapatır. Kayan metin veya animasyon dizileri oluşturmak için void loop ( ) bölümünde lcd.autoscroll ( ) işlevinden önce veya sonra bu işlevi kullanabilirsiniz.

lcd.rightToLeft()

Bu işlev, metnin ekrana yazdırıldığı yönü ayarlar. Varsayılan mod, lcd.leftToRight ( ) 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() {
lcd.begin(16, 2);
lcd.setCursor(12, 0);
lcd.rightToLeft();
lcd.print("hello, world!");
}

void loop() {

}

lcd.createChar ( )

Bu komut kendi özel karakterlerinizi oluşturmanıza izin verir. 16×2 LCD’nin 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] = {
0b00110,
0b01001,
0b01001,
0b00110,
0b00000,
0b00000,
0b00000,
0b00000
};

void setup()
{
lcd.createChar(0, customChar);
lcd.begin(16, 2);
lcd.write((uint8_t)0);
}

void loop() {
}

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.

111 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.

  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..

  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 ?

      • abı bn gnd hattını – hattına bagladıgım zaman aduınomdakı guc gıdıyor calısmıyor bıde potansıyometre etkısız eleman gıbı duruyor benım yaptıgım semada

        • Arduino’nun GND’sini – hattına bağladığınızda güç gidiyor ise devrenizde bir noktada kısa devre mevcut demektir. Potansiyometre bu devrede LCD’nin kontrast ayarını yapmamız için mevcuttur. Arduino’nuzun çalışması ile bir ilgisi yoktur.

  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.

  21. Merhaba görüntü alıyorum, arka plan ve ön planda karakterler için beyaz dikdörtgenler(potansiyometreyi ayarlayarak). Lcd yi biraz hareket ettirince(header lehimlenmemiş) garip karakterler beliriyor mesela soru işareti, üçgen gibi işaretler vs. Bunun nedeni nedir? Bana normal 16*2 lcd gibi görünüyor ama grafik lcd ise nasıl anlaşılır?

    • Eğer bahsettiğiniz şekilde ekranınızda beyaz diktörtgenler mevcut ise, bu kullandığınız ekranın karakter LCD olduğunu gösterir. Anlattığınız durum bağlantı hatasına benziyor, bağlantılarınızı tekrar kontrol etmeyi deneyebilirsiniz.

  22. Park sensörü ve ekrana yazı yazdırmak istiyorum 2sinide ayrı ayrı yapıyor fakat kodları birleştirince park sensörü devre dışı kalıyor. Nasıl yapabilirim?

    • Eğer devreyi I2C modülü ile yapmak istiyorsanız bu komutları kullanabilirsiniz(Tarihde dahil)
      #include “Wire.h”
      #define DS1307_ADDRESS 0x68
      #include
      LiquidCrystal_I2C lcd(0x20,16,2);
      void setup(){
      Wire.begin();
      lcd.init();
      lcd.init();
      lcd.backlight();
      lcd.setCursor(0,0);
      lcd.print(“www.arduinom.org”);
      delay(2000);
      }

      void loop(){
      printDate();
      delay(1000);
      }

      byte bcdToDec(byte val) {
      return ( (val/16*10) + (val%16) );
      }

      void printDate(){

      Wire.beginTransmission(DS1307_ADDRESS);
      byte zero = 0x00;
      Wire.write(zero);
      Wire.endTransmission();
      Wire.requestFrom(DS1307_ADDRESS, 7);
      int second = bcdToDec(Wire.read());
      int minute = bcdToDec(Wire.read());
      int hour = bcdToDec(Wire.read() & 0b111111);
      int weekDay = bcdToDec(Wire.read());
      int monthDay = bcdToDec(Wire.read());
      int month = bcdToDec(Wire.read());
      int year = bcdToDec(Wire.read());
      lcd.clear();
      //su sekide ayarlamalısınız 3/1/11 23:59:59
      lcd.setCursor(1,0);
      lcd.print(“Tarih: “);
      lcd.print(monthDay);
      lcd.print(“/”);
      lcd.print(month);
      lcd.print(“/”);
      lcd.print(year);
      lcd.setCursor(0,1);
      lcd.print(” Saat :”);
      lcd.print(” “);
      lcd.print(hour);
      lcd.print(“:”);
      lcd.print(minute);
      lcd.print(“:”);
      lcd.print(second);
      delay(1);

      }
      Eğer I2C yi kullanmayacaksanız sadece arduino üzerindeki dört pini kıllanark yapabilirsiniz. Kodları:
      #include “Wire.h”
      #define DS1307_ADDRESS 0x68
      byte zero = 0x00;

      void setup(){
      Wire.begin();
      Serial.begin(9600);
      setDateTime();
      }

      void loop(){
      printDate();
      delay(1000);
      }

      void setDateTime(){

      byte second = 45; //0-59
      byte minute = 12; //0-59
      byte hour = 19; //0-23
      byte weekDay = 4; //1-7
      byte monthDay = 2; //1-31
      byte month = 5; //1-12
      byte year = 13; //0-99

      Wire.beginTransmission(DS1307_ADDRESS);
      Wire.write(zero); //stop Oscillator

      Wire.write(decToBcd(second));
      Wire.write(decToBcd(minute));
      Wire.write(decToBcd(hour));
      Wire.write(decToBcd(weekDay));
      Wire.write(decToBcd(monthDay));
      Wire.write(decToBcd(month));
      Wire.write(decToBcd(year));

      Wire.write(zero);

      Wire.endTransmission();

      }

      byte decToBcd(byte val){
      return ( (val/10*16) + (val%10) );
      }

      byte bcdToDec(byte val) {
      return ( (val/16*10) + (val%16) );
      }

      void printDate(){
      Wire.beginTransmission(DS1307_ADDRESS);
      Wire.write(zero);
      Wire.endTransmission();

      Wire.requestFrom(DS1307_ADDRESS, 7);

      int second = bcdToDec(Wire.read());
      int minute = bcdToDec(Wire.read());
      int hour = bcdToDec(Wire.read() & 0b111111);// 24 saat
      int weekDay = bcdToDec(Wire.read()); //7 gün
      int monthDay = bcdToDec(Wire.read());
      int month = bcdToDec(Wire.read());
      int year = bcdToDec(Wire.read());

      //ornek 3/1/11 23:59:59
      Serial.print(month);
      Serial.print(“/”);
      Serial.print(monthDay);
      Serial.print(“/”);
      Serial.print(year);
      Serial.print(” “);
      Serial.print(hour);
      Serial.print(“:”);
      Serial.print(minute);
      Serial.print(“:”);
      Serial.println(second);
      }

  23. Selam hocam bu şekilde bi kurulumdan sadece hız kontrolü yaparken görüntü alabilirmiyim kod işleminde ise lcd kodunu hız kontrolü koduyla birleştirmem gerekiyormu yoksa sadece hız kontrol kodu yeterli olurmu teşekkürler

    • “Birleştirmek” doğru bir terim olmasa da, her iki programdan da faydalanarak hız kontrolü ile LCD ekran işlevini aynı anda yapacak bir program oluşturmanız tabi ki mümkündür.

  24. Merhaba lcd shiled keypad ve dh11 birleştirerek sıcaklık ölçüm cihazı yaptım.Ama ben buna belli bir sıcaklıga geldiğinde açıcak röle bağlamak istiyorum .Aşağıdaki kodda bunu yaptım ama röle tepki vermiyor. Kodda herhangi bir sorun görünmüyor .Acaba ne eksik bide siz bakarmısınız?

    int relay=6;
    float temperature; //analog değeri dönüğtüreceğimiz sıcaklık
    #include //LCD için kütüphanemizi giriyoruz.
    #include //DHT Sensörü için kütüphanemizi giriyoruz.
    dht11 DHT11;

    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

    void setup()
    {

    Serial.begin(9600);
    lcd.begin(16, 2);
    lcd.print(“SICAKLIK °C:”);
    DHT11.attach(2); //DHT11 sıcaklık sensörünü bağladığımız pini yazıyoruz. 2 numaralı seçtim burada.
    pinMode(relay, OUTPUT);
    }

    void loop() {
    // Seri Port ekranından hata varsa görebiliriz. Yoksa OK yazar. Devre çalışıyor anlamındadır.
    int chk = DHT11.read();
    switch (chk)
    {
    case 0: Serial.println(“Sorunsuz Çalışıyor”); break;
    case -1: Serial.println(“Checksum error”); break;
    case -2: Serial.println(“Time out error”); break;
    default: Serial.println(“Unknown error”); break;
    }

    //Led’in ikinci satırına ölçülen sıcaklık değerini yazıyor.
    lcd.setCursor(0, 0);
    lcd.print(“ISI : “);
    lcd.print((float)DHT11.temperature, DEC);
    lcd.setCursor(0, 1);
    lcd.print(“NEM : (%) “);
    lcd.print((float)DHT11.humidity, 2);
    if (temperature>20) //Eğer sıcaklık 30 derecenin üstünde ise :
    {
    digitalWrite(relay, HIGH);
    }
    else
    {
    if (temperature<20); //30 derecenin altında ise :
    digitalWrite(relay, LOW);
    }

    delay(1000); // 2 Saniyede bir ölçümü günceller.
    }

    • Laptop’tan çıkan LCD paneli Arduino’ya bağlamanız mümkün değildir. Fakat elinizdeki panele uygun olan LVDS sürücü devresinden satın alarak laptop ekran panelinizi HDMI/VGA gibi girişler ile kullanabileceğiniz bir ekrana çevirebilirsiniz.

  25. hocam merhaba ben yaptığınız herşeyi yaptım amma ve lakin bir sorun oluşuyor bu sorun is şu şekilde
    exit status 1
    Error compiling for board Arduino/Genuino Uno.
    bu sorunu çözmeme yardımcı olurmusunuz şimdiden teşekkürler

    • Aldığınız hata mesajının tamamını yazar mısınız? Bu yazmış olduğunuz mesaj herhangi bir sorunu görmemizde yardımcı olmuyor.

      • tabiki biraz geç cevap verdi ama sorun bu şekilde
        C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\arduino-builder -dump-prefs -logger=machine -hardware C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware -tools C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\tools-builder -tools C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -built-in-libraries C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\libraries -libraries C:\Users\pc\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10805 -build-path C:\Users\pc\AppData\Local\Temp\arduino_build_77773 -warnings=none -build-cache C:\Users\pc\AppData\Local\Temp\arduino_cache_576953 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -verbose C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal-master\examples\HelloWorld\HelloWorld.ino
        C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\arduino-builder -compile -logger=machine -hardware C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware -tools C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\tools-builder -tools C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -built-in-libraries C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\libraries -libraries C:\Users\pc\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10805 -build-path C:\Users\pc\AppData\Local\Temp\arduino_build_77773 -warnings=none -build-cache C:\Users\pc\AppData\Local\Temp\arduino_cache_576953 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr -verbose C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal-master\examples\HelloWorld\HelloWorld.ino
        Using board ‘uno’ from platform in folder: C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr
        Using core ‘arduino’ from platform in folder: C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr
        Detecting libraries used…
        “C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\standard” “C:\Users\pc\AppData\Local\Temp\arduino_build_77773\sketch\HelloWorld.ino.cpp” -o “nul”
        “C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\standard” “-IC:\Users\pc\Documents\Arduino\libraries\LiquidCrystal” “C:\Users\pc\AppData\Local\Temp\arduino_build_77773\sketch\HelloWorld.ino.cpp” -o “nul”
        “C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\standard” “-IC:\Users\pc\Documents\Arduino\libraries\LiquidCrystal” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI\src” “C:\Users\pc\AppData\Local\Temp\arduino_build_77773\sketch\HelloWorld.ino.cpp” -o “nul”
        “C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\standard” “-IC:\Users\pc\Documents\Arduino\libraries\LiquidCrystal” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI\src” “C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp” -o “nul”
        “C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++” -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\standard” “-IC:\Users\pc\Documents\Arduino\libraries\LiquidCrystal” “-IC:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI\src” “C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp” -o “C:\Users\pc\AppData\Local\Temp\arduino_build_77773\preproc\ctags_target_for_gcc_minus_e.cpp”
        C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal\LiquidCrystal.cpp:6:22: fatal error: WProgram.h: No such file or directory

        #include “WProgram.h”

        ^

        compilation terminated.

        “LiquidCrystal.h” için birden fazla library bulundu
        Kullanılıyor: C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal
        Kullanılmıyor: C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal-master
        LiquidCrystal klasöründeki kütüphane kullanılıyor: C:\Users\pc\Documents\Arduino\libraries\LiquidCrystal (legacy)
        Şu dizinde 1.0 sürümündeki SPI kütüphanesi kullanılıyor: C:\Users\pc\Desktop\Arduino denemeler\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI
        exit status 1
        Error compiling for board Arduino/Genuino Uno.

        • Sorununuz Arduino IDE programınızdan kaynaklı. Programı tekrardan indirin ve Belgelerim\Arduino\libraries klasörü altında yer alan kütüphaneleri düzenlemeyi deneyin. Yazmış olduğunuz hata mesajında LiquidCrystal kütüphanenizden iki adet olduğu görünüyor.

  26. Merhaba hocam sorunumun kaynağını buldum dikkatli bakmadığım için olmuş şimdi arduno nun zip halini sildim ve normal halini yükledim bu görülen komutlarlada fala kütüphaneleri sildim

  27. merhaba!!!bana yardımcı olurmusunuz ? arduınoyu kumbara içinde kullanacağım ıcd keypad sheld, ses kaydı ve algılama pırını kullanarak kumbara yapmak istiyorum nasıl bi yol izlemem gerekir ve hangi malzemeleri almalıyım .şimdiden teşekkürler.

    • Kumbara yapacaksanız sanırım bir kilit sistemi kullanmanız gerekecek. Buna benzer bir mekanizma kullanabilirsiniz. Tuş takımı ve ekranı şifre girmek için kullanacağınızı varsayıyorum, bunun haricinde bahsettmiş olduğunuz gibi kumbaranın dolduğunu algılamak için bir sensör kullanmanız gerekecektir. En basit çözüm olarak bir ağırlık veya kuvvet sensörü kullanabilirsiniz. Geriye kalan kısım ise bu parçalardan sizin ihtiyaçlarınıza uygun olanları tercih edip montajı gerçekleştirmek ve yazılımı hazırlamak olacaktır.

  28. Merhaba, Lcd (16×2) ve 4×4 keypad ile menü hazırlamak nasıl olur?yardımcı olur musunuz?.Alt menüleri yapmakta zorlanıyoruz.Yardımcı olursanız seviniriz.

  29. Merhaba. Sizin adımlarınızı uyguladım. Ama tek yapabildiğim şey kontrast ayarını değiştirmek. Arduino ile print edince hiçbirşey olmuyor. Pinlerin Yerlerini değiştirdiğimden mi? Kodum şu:

    #include

    LiquidCrystal lcd(12,11,5,4,3,2);

    void setup() {
    lcd.begin(16,2);
    lcd.clear();
    lcd.setCursor(1,1);
    lcd.print(“Deneme 1”);

    }

    void loop() {

    }

    Pinlerim lcd() fonksiyonundaki girdilerle aynı? Lütfen yardım edebilir misiniz?

    • LCD ekranınızın pin dizilimi farklı olabilir, internetten farklı dizilimleri araştırarak bu bağlantı şemalarını deneyebilirsiniz.

      • Pin dizilimlerim aynı lehimlemeden taktım ama yine aynı kapıya çıkıyor. Kusura bakmayın sizi de oyalıyorum ama 2 güne projemi teslim etmem lazım lütfen yardım edin. 1602A Modeli. 1. satırda sadece kareler var.

  30. Merhabalar, Kurduğum sistemde I2c 16×2 ekran bulunmakta. Arduino restart attığında bir problem yok, ekran çalışmakta ve istediğim bilgiler görünmekte. Sistemime bir on-off buton ekledim. Bu buton basit olarak ekranın 5v bacağına bağlı. sistem çalışırken bir sorun yok fakat ekranı on-off butondan kapatıp açtığımda bütün karakterler birbirine girmiş oluyor. Tekrar ekranı düzeltmek için arduinoya restart atmam gerekiyor. Sorun nedir ve nasıl çözebilirim? Ekranın 4 bacaklı çıkışı var. 5v, grnd ve 2 haberleşme olarak. Ben sadece 5v bacağını kontrol ediyorum. Ekran kapansa bile sistemin çalışmasını istiyorum. Ekranı sadece ihtiyaç duyduğumda açmak istiyorum. Teşekkürler.

    • Ekranı malesef tek başına kapatıp açmanız mümkün değildir. Arduino ilk çalıştığında ekranın çalışması için gerekli haberleşme işlemlerini yapmak zorundadır, ekranı kapattığınızda yazıların silinmesinin sebebi budur. Şu şekilde bir alternatif deneyebilirsiniz: Ekranı kapattığınızda Arduino’nun pinlerinden birisini de LOW konumuna çekersiniz ve bu pin tekrardan aktif olduğunda haberleşme işlemleri tekrardan başlatılır. Böylelikle Arduino ekranın kapanıp açılmış olduğunu bilecek ve haberleşmenin başlaması için gerekli işlemleri tekrardan yapacaktır.

      • Cevabınız için teşekkür ederim. Sorunu on/off butondan dijital çıkış alarak çözdüm. Bu dijital çıkışa göre if komutu içerisinde display/nodisplay döngüsüyle ile ekranı açıp kapamayı başardım. Bu aslında sizin önerdiğinizin bir değişik versiyonu. Fakat bu yöntemlerdeki sorunda loop döngüsünün 1 tur dönmesini beklemek zorunda kalmamız. 15 dakika beklemeli bir sistemim var. Dolayısıyla ekranı kapatmak ve açmak için 15 dakika beklemek durumunda kalıyorum 🙂 Loop sırasında On-Off butonunun durumuna göre anlık olarak araya işlem girmemi sağlayacak bir komut var mıdır? Yoksa illa bu süreyi beklemek zorunda mıyım?

        Teşekkürler

  31. lcd ‘ me A girişinden direk 5 volt verdim, K girişinden de 0 volt verdim ama lcd nin birkaç saniye sonra ledleri söndü ve çalışmadı. bağlantıları defalarca kontrol ettim ama lcd hiçbir şekilde çalışmıyor, direk 5 volt vermeden önce çalışıyordu, sorun ne olabilir?(lcd nin modeli 1602A)

  32. merhaba kerem bey benim lcd ekranımda sadece kareler olsusuyor ve sacma sapan semboler gelıyo yardımcı olabilir mısınız

    • Merhaba. Lütfen aşağıdaki adımları kontrol ederek ilerleyin.

      (1) Arka ışığınızın düzgün çalışmasını sağlayın. (15 ve 16. pinler) Devreye potansiyometre eklediğinizden emin olun ve kontrast ayarlarınızı kontrol edin. Kullandığınız LCD’de arka ışık yoksa akım sınırlayıcı bir direnç kullandığınızdan emin olun.
      (2) LCD R / W pinini (pin 5) GND’ye bağlayın.
      (3) Pinlerinizin lehimleri düzgün bir şekilde yapılmış olmalı.
      (4) LCD modülünüz ile Arduino’nuz arasındaki 6 kontrol ve veri kablolarını düzgün bağladığınızdan emin olun.
      (5) Kütüphanenizi doğru şekilde eklediğinize emin olun, aynı kütüphaneden birden fazla varsa fazla olanları silin.

CEVAP VER

Please enter your comment!
Please enter your name here