back to top

16×2 LCD Ekran (Kurulum ve Programlama Rehberi)

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 LCD Ekran Devre Bağlantıları

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:

Arduino LCD Komutları

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() {
}

Arduino Lcd i2c Kullanımı

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.

Arduino lcd bağlantı
Arduino lcd bağlantı

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 ı2c modülü bağlantısı
Arduino ı2c modülü bağlantısı

Arduino modeline göre I2C pinleri farklılık gösterebilir, aşağıda bulunan tablodan bu pinleri öğrenebilirsiniz

Arduino türüSDA piniSCL pini
Arduino UnoA4A5
Arduino Mega2021
Arduino Leonardo23
Arduino Due2021
Arduino NanoA4A5

Arduino I2c Lcd Kütüphanesi kurulumu

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 ide’ye eklemek için “Taslak > Library ekle > Zıp Kitaplığı Ekle…“ Segmelerini takip ederek kütüphane yöneticisini açalım.

Arduino Ide Taslak Menüsü
Arduino Ide Taslak Menüsü

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.

Arduino Ide Kütüphane Çağırma Sayfası
Arduino Ide Kütüphane Çağırma Sayfası

Kütüphane dosyanız bu şekilde yüklendiği zaman sol alt köşede “yüklendi” yazısı çıkması gerekir.

Arduino Ide Arayüzü
Arduino Ide Arayüzü

Kütüphanenin yüklendiğinden emin olmak için manuel kontrol yapabilirsiniz.

Manüel kontrol nasıl yapılır bilmiyorsanız, Arduino ide’ye nasıl kütüphane yüklenir konulu blog yazımızı burdan okumanızı tavsiye ederim.

Arduino İle Lcd Ekrana Yazı Yazma

Arduino ı2c modülü devre şeması
Arduino ı2c modülü devre şeması

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()
{
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello, world!"); //İlk satıra yazalım
  lcd.setCursor(0,1);
  lcd.print("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.

I2c Lcd Arabirim Adresi Öğrenme

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()
{
    Wire.begin();
    Serial.begin(9600);
    Serial.println("\nI2C Araniyor...");
  
    for(address = 0; address <= 127; address++ )
    {
       Wire.beginTransmission(address);
       error = Wire.endTransmission();
       if (error == 0)
       {
         Serial.print("I2C cihaz bulundu. Adresi: 0x");
         if (address<16)   Serial.print("0");
         Serial.println(address,HEX);
  
         DeviceFound = true;
         break;
       }
       else if (error==4)
       {
         Serial.print("Bilinmeyen hata olustu. Adres: 0x");
         if (address<16)  Serial.print("0");
         Serial.println(address,HEX);
       }
    }
    if (DeviceFound == false)
       Serial.println("Herhangi bir bagli I2C bulunamadi\n");
    else
       Serial.println("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.

Arduino serial monitör
Arduino serial monitör

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.

Son Çıkan Yazılar

163 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

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

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

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

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

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

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

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

    • 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

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

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

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

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

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

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

    • 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);
      }

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

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

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

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

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

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

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

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

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

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

  29. merhaba hocam benim projede ışık var kamera var ama yazı yok benim hocamın ardiuno uno sunda var pinleri deralarca kontrol ettim ve lehim de problem yok lütfen yardımcı oklun

    • Merhaba. Ekran ışığınız yanıyorsa ve yazıları göremiyorsanız; 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. Kablo ve lehimlerinizin doğruluğunda eminseniz kütüphanenizi doğru şekilde eklediğinize emin olun, aynı kütüphaneden birden fazla varsa fazla olanları silin. Bunları denediğinizde projeniz hala yanıt vermiyorsa lütfen projenizden daha ayrıntılı bahsedin ki yardımcı olabileyim.

    • Bu tarz projelerde sorunu bulmak için projenin parçalarını adım adım kontrol etmek gerekebiliyor. Projenizin detaylarına hakim değilim fakat öncelikle LCD ekranınızın, Arduino’nun LiquidCrystal kütüphanesindeki örnek kodlarla birlikte düzgün çalışıp çalışmadığından emin olmanızı öneririm.

    • Selamlar. Daha önce pic mikrodenetleyicilerle çalışma yapmadığım için bu seferlik yardımcı olamayacağım maalesef. Fakat küçük bir araştırma yaptım ve internette gördüğüm yorumların neredeyse tamamında 16f690 ile LCD ekranın verimli kullanılamadığından bahsedilmiş ve kullanıcılar projelerine farklı bir model ile devam etmiş. Dilerseniz Youtube’da “16f690 pic with LCD” yazarak aratabilirsiniz. Birkaç proje gördüm fakat proje detaylarına ilişkin bilgiler net değil.

    • Merhaba. Bu şekilde erkek erkek pin başlıkları alıp LCD ekranınızın altında veya üstünde bulunan deliklere lehimlemeniz gerekiyor. Ürün için buraya bakabilirsiniz. Lehimlemeyle ilgili fazla bilginiz yoksa da bu videoyu izleyerek kolayca öğrenebilirsiniz.

  30. Arduino:1.8.8 (Windows 8.1), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 1690 bayt (5 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 59 byte kadarını (2%) kullanıyor. Yerel değişkenler için 1989 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    Serial port not selected.
    C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b içerisinde geçersiz kütüphane bulundu: no headers files (.h) found in C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b
    C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b içerisinde geçersiz kütüphane bulundu: no headers files (.h) found in C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b
    C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b içerisinde geçersiz kütüphane bulundu: no headers files (.h) found in C:\Users\eymen\Documents\Arduino\libraries\sketch_mar07b

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    hata veriyor

    • Merhaba. Görünüşe göre klasörde .h uzantılı dosyayı bulamıyor program. Arduino klasöründeki kütüphaneler klasörüne girmeniz lazım. Bir kütüphane, sınıf için adlandırılmış bir alt klasörde olmalıdır ve bir C++ uygulaması ve header dosyası içermelidir. Aşağıdaki adımları izlemeniz gerekiyor:
      Arduino > Kütüphaneler > LiquidCrystal > src > Liquidcrystal.h
      Arduino > Libraries > LiquidCrystal > src > Liquidcrystal.h
      Dosyalarınız bu şekilde olması gereken yerde değilse ve sorun devam ediyorsa kütüphaneler (libraries) klasöründen LiquidCrystal klasörünü tamamen silin ve aşağıdaki adımları izleyerek yeniden yükleyin.
      Arduino programını açın. Menüden Sketch > Include Library > Manage Libraries. Çıkan ekranda aramaya LiquidCrystal yazıp çıkan sonuca basın ve yükleyin.
             

      • Hocam kolay gelsin öncelikle paylaştığınız bilgiler için çok teşekkür ediyorum.
        Üst satıra bir sayı yazıp alt satıra binary veya hexd çevirisini nasıl yazdırabiliriz ve bu üst sayıyı tuş takımı veya kumanda ile girebilir miyiz? bunun bir örneğini paylaşırsanız sevinirim. İyi çalışmalar.

  31. Benim yeşil üzerine sihay LCD ekranım var ancak,ust satır tamamen siyah. Nedenini bulamadım. Üstelik arduinomda sürekli kırmızı ışık yanıyor.yazı yazmıyor üst satır tamamen siyah.

  32. Hocam kolay gelsin öncelikle paylaştığınız bilgiler için çok teşekkür ediyorum.
    Üst satıra bir sayı yazıp alt satıra binary veya hexd çevirisini nasıl yazdırabiliriz ve bu üst sayıyı tuş takımı veya kumanda ile girebilir miyiz? bunun bir örneğini paylaşırsanız sevinirim. İyi çalışmalar.

  33. Bir sürü devre denedim. LCD’nin tüm bağlantıları doğru. Ancak sadece mavi ışık yanıyor beyaz yazı gelmiyor. Pot ile oynadım , farklı değerde taktım ancak olmuyor. Beyaz yazı bir türlü gelmedi.

  34. 4 defa devreyi kontrol etmeme rağmen lcd ekranda görüntü alamıyorum. Bir çok kez denedim yazdığım kodlarda doğru bağlantılarda. LCD ekranında ışık var güç geliyor ama yazı yok. Yardımcı olabilir misiniz?

  35. Bütün kabloları 3 kez kontrol edip taktım. Kodu yazarkende 3 kez kontrol edip yazdom. Ama Lcd ekran yanıyor ama kare şekiller geliyor. Harfler gelmiyor.

  36. Merhaba,

    Tüm devre bağlantılarının tamamını yaptım ve kontrol ettım. Kodu da Dosya- Örnekler- Liquid Crystal – Hello world seçtim ve yükleme başarı ile gerçekleşti ancak. Lcd ekran pot ile kontrast ayarı yapabiliyorum. Sadece bu kadar herhangı bir yazı göremeiyorum. Ufak kare noktalar dışında birşey yok ekranda sorun ne olabilir?

  37. 8 defa devreyi kontrol etmeme rağmen lcd ekranda görüntü alamıyorum. Bir çok kez denedim yazdığım kodlarda doğru bağlantılarda. LCD ekranında ışık var güç geliyor ama yazı yok. Yardımcı olabilir misiniz?

  38. LCD’deki bir yazıyı sırasıyla: Sağdan sola, sonra alt satıra, alt satırda soldan sağa, sonra ise tekrar başa dönderen program kodlarını oluştumakı istiyorum.for döngüsü ile yapmaya çalışıyorum ama bi türlü yapamadım lütfen bu kodu benim için yazıp yollayabilirmisiniz.

    • Arduinoda yer alan örnekler içerisindeki LiquidCrsytal>CustomCharacter örneğini inceleyebilirsiniz. Bu örnek içinde hem özel karakter yaratımı, hem de bu karakterlerin LCD ile kullanımı anlatılmıştır.

  39. Merhaba ben ilk şemyı incelerken gördüm. Potansiyometrenin olduğu yerde GND hattını – 5V hattını ise + kısmına bağlamışsınız. tam tersi olması gerekmez mi?

  40. lcd.scrollDisplayLeft ( )
    komutunu sadece bir satıra uygulayabilir miyim?
    örnek:
    Semih ESER
    Elektrik Elektronik Mühendisi

    2. satır lcd ekrana sığamayacağı için Semih ESER sabit kalıp sadece 2. satırın sola kaymasını istiyorum

  41. her farklı kodda denedim sistemi , kontrast ayarını denedim , devremi de kontrol ettim fakat lcd ekranıma hiçbir şekilde yazı gelmiyor. Bunun sebebi kartımın bozuk olması dışında ne olabilir acaba?

    • bende de oluyodu biraz daha araştırdım onun nedeni lcd ekran modeli onu galiba senin lcd ekranın XX1602XX
      serisi bunu şu kodla yapabilirsin kodu biyerden buldum (kaynak:Hakan Müştak)
      //////////////////////////////////////////////////////////////////////////////////////////////
      /*
      * Konu : LCD – 1602 serisi pin çözümü
      * Tarih : 05/07/2015
      * Hakan Müştak
      * [email protected]
      */

      // Kütüphane
      #include

      // Arayüz ilişkisi için pinlerimiz
      LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);

      #define LCD_LIGHT_PIN 6 // LCD arka ışığı pini

      void setup() {
      pinMode(LCD_LIGHT_PIN, OUTPUT); // LCD Arka Işığı
      digitalWrite(LCD_LIGHT_PIN, HIGH); // LCD Arka Işığını Aç

      // LCD Başlangıç ayarları
      lcd.begin(16, 2);
      lcd.setCursor(1,0); // 1.satır
      lcd.print(“Sorun Cozuldu”); // 1.satır metin
      lcd.setCursor(4,2); // 2.satır
      lcd.print(“hmustak”); // 2.satır metin

      }

      void loop() {
      lcd.noDisplay(); // LCD Ekranı Sil
      delay(500);
      lcd.display(); // LCD Ekranı Göster
      delay(500);
      }
      /////////////////////////////////////////////////////////////////////////////////////////

  42. Merhaba verilen bir program çalıştığında serial monitörde örneğin “GÜNAYDIN” yazısının kalkması için A4 girişindeki gerilimin kaç volt olmasi gerekiyor…. Ben 1.000975 şeklinde buldum bunu 1voltmu, 2 v mu kabul etmemiz gerekiyor.Cevap verirseniz sevinirim teşekkürler

  43. Merhaba
    LCD(16,2) ve Keypad (4×3) kullanarak bir asal sayı programı yapmak istiyorum. Fakat keypad le girdilerim hep tek basamaklı sayı oluyor yani “65”girmek istiyorum ancak program bunu önce “6” sonra “5” basmışım gibi algılıyor. 2 veya 3 haneli sayıları girebilmek için nasıl bir yol izlemeliyim. TEŞEKKÜRLER.

    #include

    #include

    #include

    LiquidCrystal_I2C lcd(0x3f, 16, 2);

    const byte satir = 4;
    const byte sutun = 3;

    char tus_takimi[satir][sutun] = {
    {‘1’, ‘2’, ‘3’},
    {‘4’, ‘5’, ‘6’},
    {‘7’, ‘8’, ‘9’},
    {‘*’, ‘0’, ‘#’}
    };

    byte satir_pinleri[] = {13, 12, 11, 10};
    byte sutun_pinleri[] = {7, 6, 5};

    Keypad pad = Keypad(makeKeymap(tus_takimi), satir_pinleri, sutun_pinleri, satir, sutun);

    int i;

    char tus = 0;
    int a ;

    void setup() {

    Serial.begin(9600);

    lcd.begin();

    }

    void loop() {

    lcd.setCursor(0, 0);
    lcd.print(“bir sayi giriniz”);
    tus = pad.getKey();

    if (tus) {
    Serial.println (a);
    a = tus – 48 ; //onluk tabana çevirmek için böyle bir çözüm buldum

    lcd.setCursor(0, 1);
    lcd.print(a);
    delay(1000);

    if (a <= 1) {
    lcd.clear();
    lcd.print("1den buyuk girin");
    delay(1000);
    }
    else {
    lcd.clear();
    int x = 0;
    for (i = 2; i < a; i++) {
    if ( a % i == 0){
    x = x + 1;
    break;
    }
    }
    if ( x == 0) {
    lcd.print(" asaldir");
    delay(1000);
    }

    else if (x != 0) {
    lcd.print(" asal degildir.");
    delay(1000);

    }
    }
    }
    }

  44. Herkese merhabalar, 3 buton ile LCD deki yazıyı 1 kolon sağa, sola ve tekrar ortaya almak için ne yapmalıyım?Kod konusunda yardım edebilir misiniz?

  45. merhaba bir oyundan lcd ekrana hız verisini nasıl çekebilirim? servo motora kataran bir kodlama elimde mevcut. Devresi de çalışıyor. lcd ekranı aynı sinyal kablosu üzerine bağlamam yeterli olur mu?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz