pcf8574t ve 1602a v2 için i2c (lcd ekran) library
  • Merhaba bende geçen hafta itibari ile Arduino seline kapıldım. PHP tabanlı web programcısı ve ayrıca lise döneminden elektronik okuduğumdan çok da zorlandım diyemeyeceğim. temeli olan insanlar için yapı oldukça kolay aslında..

    İlk hafta LCD ile uğraştım biraz.
    Çinden getirtmiş olduğum lcd ekran ve ekran sürücüsü için bir sürü library v.s. denedim sonuç yok. Sağda solda bulduğum hiç bir i2c librarysi sonuç vermeyince ürünü aldığım firma ile irtibata geçerek çalışan library'i aldım. Kart bende 0x27 adresinde çalışmakta. bu sorunu yaşayıp ekran sürücüsünü çalıştıramayanlar için library'i paylaşıyorum...

    https://yadi.sk/d/auZum_1ldDhzA

    ekranı test etmek için için öncelikle i2c adresini bulun büyük ihtimal 0x27 olacaktır.

    mevzu bahis lcd ve sürücünün görseli ( üzerinde üretici bilgisi bulunmuyor ancak çinden istenen cihazların çoğu bu)

    http://i.hizliresim.com/Gp1Nb2.jpg

    --------------------------

    #include (Wire.h)
    #include (LiquidCrystal_I2C.h)

    LiquidCrystal_I2C lcd(0x27,16,2); // 16 karakter 2 satır lcd ekran için sürücünün adresi buradan tanımlanıyor büyük ihtimal 16,2 yi 20,4 yaparsanız 20x4 de çalışacaktır.

    void setup()
    {
    lcd.init(); // lcd yi tanıyor

    // mesajı yazıyorum
    lcd.backlight();
    lcd.print("Merhaba Dunya!");
    }

    void loop()
    {
    }

    ------------------------------

    inculde satırlarındaki parantezleri <> ile değiştirin...
  • Hocam bu serial monitordeki bilgileri LCD den okumak için kullanılabiliyorsa
    Bağlantı şeması yada link rica etsem
  • serial monitore giden bilgiler için sketch de
    serial.print komutu vardır onu kodun başlangıcına
    lcd.print olarak değiştirip programa i2c çalışması için gerekli kodları eklerseniz serial monitör yerine lcd den görüntü alabilirsiniz...

    örnek olarak dht11 ile ve sıcaklık ve nem bilgilerini serial monitöre kaydeden programın lcd ile çalışan versiyonunu yazmıştım ordan mevzuyu daha rahat alnayabilirsiniz...

    ----

    #include (Wire.h)
    #include (LiquidCrystal_I2C.h)
    #include (dht11.h)

    #define dht11_dpin A2 //dht11 in bağlı olduğu portu tanımlama

    dht11 DHT11;

    LiquidCrystal_I2C lcd(0x27,16,2); // lcd sürücüsü adresi ve lcd yi tanımama

    void setup()
    {
    lcd.init(); // lcd yi başlatma

    // açılış mesajı
    lcd.backlight();
    lcd.setCursor ( 0, 0 );
    lcd.print("Termometre");
    lcd.setCursor ( 0, 1 );
    lcd.print("Onur UNLU v.02");
    delay (2000);
    }

    void loop(){
    //bu kısımın orijinali serial monitör idi onu lcd ye göre uyarlama..
    DHT11.read(dht11_dpin);
    lcd.init();
    lcd.setCursor ( 0, 1 ); // lcdnin 2. satırına yazılacak diye bildiriyoruz.
    lcd.print("Nem: ");
    lcd.setCursor ( 9, 1 ); // lcd nin 2. satırının orta noktasında nem değeri yazacak.
    lcd.print(DHT11.humidity);
    lcd.print(" %");
    lcd.setCursor ( 0, 0 ); // lcdnin 1. satırına yazılacak diye bildiriyoruz.
    lcd.print("Sicaklik |");
    lcd.setCursor ( 9, 0 ); // lcd nin 1. satırının orta noktasında nem değeri yazacak.
    lcd.print(DHT11.temperature);
    lcd.print(" C");
    lcd.print((char)223); // derece simgesinin yazılması için kullanılıyor

    delay(3000); // verileri 3 saniyede bir yenileyecek.

    //kodun sonu.
    ------

    NOT:kodun çalışması için include satırındaki () işaretlerini <> ile değiştirin.


    kodun orijinaline bakarsanız
    Serial.print("Nem (%): ");
    Serial.println((float)DHT11.humidity, 2);

    Serial.print("Sicaklik (Celcius): ");
    Serial.println((float)DHT11.temperature, 2);

    şeklindedir bu yapıyı biz lcd.print ile değiştirmiş olduk ...

    bağlantı şemasına gerek var mı bilemedim. LCD sürücüsü elektrik harici 2 kablo ile çalışmakta. sürücü 5 v, gnd sda ve scl portları ile çalışır . lcd nin çalışması için UNO da sda -->a4
    scl --> a5 e bağlıyorsunuz. Arduino r3 ise kendi üzerinde bu portlara paralel olarak usb girişinin yanında da portlar mevcut.
    Güç besleme kablolarını da taktıktan sonra lcd sorunsuz çalışır zaten sürücünün amacı arduino portlarını doldurmamak... sensörler ile okuduğunuz veya hesaplattığınız veriler bu mantıkta lcd ye yazılmış olur...




  • Teşekkürler açıklamalar için
  • merhabalar bende i2c 20x4 lcd ile sıkıntılıyım. benim aldığım lcdnin kütüphanesiyle deneme yaptım çalıştı lakin normal lcd kullanamıyorum kütüphaneleri çakışıyor. bu sorunun i2c lib silmeden çözümü var mı ?
  • Bendede aynı kütüphane ve lcd var;
    #include
    LiquidCrystal_I2C lcd(0x27,16,2);
    Yazı gönderebiliyorum ama;
    -----------------
    lm35 sıcaklık sensörüm mevcut i2c lcd'ye sıcaklığı göndermek istiyorum ama beceremedim bir türlü, yardım edermisiniz.
    -----------------
    Ancak seri monitörden okuyabiliyorum sıcaklığı; bakınız koduda bu;

    float temp;
    int tempPin = 0;

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

    void loop()
    {
    temp = analogRead(tempPin);
    temp = temp * 0.48828125;
    Serial.print("TEMPRATURE = ");
    Serial.print(temp);
    Serial.print("*C");
    Serial.println();
    delay(1000);
  • M11.

    serial.print ve seralprintln olan yerleri lcd.print olarak düzeltin. çalışır. setup kısmından serial.begini kaldırın, lcd den sonuç alacaksanız gerek yok o satıra.

    Windshair:

    i2c kullanırken birde ekstradan normal lcd mi bağlıyorsunuz sorunu tam anlamadım ?
  • hocam bende 16x2 lcd ve i2c modülü var mpu6050 deki değerleri arduino nano kullanarak yazdırabilir miyim? sonuçta 2 si de gnd vcc sda scl pinleriyle çalışıyor.
  • i2c lcd modulu kendı kutuphanesi ile kullanabılırsın.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.